%{
#include <stdio.h>
int macros = 0;
int headers = 0;
%}
%%
^[ \t]*"#include"[ \t]*[<"].*[>"] { headers++; }
^[ \t]*"#define"[ \t]+[a-zA-Z_][a-zA-Z0-9_]* { macros++; }
.|\n { /* Ignore all other characters so they don't echo to the screen */ }
%%
int yywrap() {
return 1;
}
int main() {
printf("Enter the C program input (press Ctrl+D to end):\n");
yylex();
printf
("\nTotal
number of macros defined
: %d\n", macros); printf
("Total
number of header files included
: %d\n", headers); return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CmludCBtYWNyb3MgPSAwOwppbnQgaGVhZGVycyA9IDA7CiV9CgolJQpeWyBcdF0qIiNpbmNsdWRlIlsgXHRdKls8Il0uKls+Il0gICB7IGhlYWRlcnMrKzsgfQpeWyBcdF0qIiNkZWZpbmUiWyBcdF0rW2EtekEtWl9dW2EtekEtWjAtOV9dKiB7IG1hY3JvcysrOyB9Ci58XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgLyogSWdub3JlIGFsbCBvdGhlciBjaGFyYWN0ZXJzIHNvIHRoZXkgZG9uJ3QgZWNobyB0byB0aGUgc2NyZWVuICovIH0KJSUKCmludCB5eXdyYXAoKSB7IAogICAgcmV0dXJuIDE7IAp9CgppbnQgbWFpbigpIHsKICAgIHByaW50ZigiRW50ZXIgdGhlIEMgcHJvZ3JhbSBpbnB1dCAocHJlc3MgQ3RybCtEIHRvIGVuZCk6XG4iKTsKICAgIHl5bGV4KCk7CiAgICBwcmludGYoIlxuVG90YWwgbnVtYmVyIG9mIG1hY3JvcyBkZWZpbmVkOiAlZFxuIiwgbWFjcm9zKTsKICAgIHByaW50ZigiVG90YWwgbnVtYmVyIG9mIGhlYWRlciBmaWxlcyBpbmNsdWRlZDogJWRcbiIsIGhlYWRlcnMpOwogICAgcmV0dXJuIDA7Cn0K