%{
#include <stdio.h>
int identifier_count = 0;
%}
%%
[a-zA-Z_][a-zA-Z0-9_]* {
identifier_count++;
}
[ \t\n]+ { /* Skip whitespace */ }
. { /* Ignore everything else */ }
%%
int main(int argc, char **argv) {
if (argc > 1) {
FILE *file = fopen(argv[1], "r");
if (!file) {
perror("Error opening file");
return 1;
}
yyin = file;
}
yylex(); // Start the lexical analysis
printf
("
Number of identifiers
: %d\n", identifier_count); return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgaWRlbnRpZmllcl9jb3VudCA9IDA7CiV9CgolJQpbYS16QS1aX11bYS16QS1aMC05X10qICAgIHsgCiAgICBpZGVudGlmaWVyX2NvdW50Kys7IAp9ClsgXHRcbl0rICAgICAgICAgICAgICAgICAgeyAvKiBTa2lwIHdoaXRlc3BhY2UgKi8gfQouICAgICAgICAgICAgICAgICAgICAgICAgIHsgLyogSWdub3JlIGV2ZXJ5dGhpbmcgZWxzZSAqLyB9CiUlCgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKICAgIGlmIChhcmdjID4gMSkgewogICAgICAgIEZJTEUgKmZpbGUgPSBmb3Blbihhcmd2WzFdLCAiciIpOwogICAgICAgIGlmICghZmlsZSkgewogICAgICAgICAgICBwZXJyb3IoIkVycm9yIG9wZW5pbmcgZmlsZSIpOwogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgeXlpbiA9IGZpbGU7CiAgICB9CgogICAgeXlsZXgoKTsgIC8vIFN0YXJ0IHRoZSBsZXhpY2FsIGFuYWx5c2lzCiAgICBwcmludGYoIk51bWJlciBvZiBpZGVudGlmaWVyczogJWRcbiIsIGlkZW50aWZpZXJfY291bnQpOwogICAgcmV0dXJuIDA7Cn0K