%{
#include <stdio.h>
int letter_count = 0, digit_count = 0, special_count = 0;
%}
%%
[a-zA-Z] { letter_count++; }
[0-9] { digit_count++; }
[^a-zA-Z0-9\n\t ] { special_count++; }
%%
int main(int argc, char *argv[]) {
if (argc != 2) {
printf("Usage: %s <filename>\n", argv[0]);
return 1;
}
FILE *file = fopen(argv[1], "r");
if (!file) {
printf
("Error
: Could not
open file
%s\n", argv[1]); return 1;
}
yyin = file;
yylex();
fclose(file);
printf("Letters: %d\n", letter_count);
printf("Numbers: %d\n", digit_count);
printf("Special Characters: %d\n", special_count);
return 0;
}
int yywrap() {
return 1;
}
JXsKICAgICNpbmNsdWRlIDxzdGRpby5oPgogICAgaW50IGxldHRlcl9jb3VudCA9IDAsIGRpZ2l0X2NvdW50ID0gMCwgc3BlY2lhbF9jb3VudCA9IDA7CiV9CgolJQpbYS16QS1aXSB7IGxldHRlcl9jb3VudCsrOyB9ClswLTldIHsgZGlnaXRfY291bnQrKzsgfQpbXmEtekEtWjAtOVxuXHQgXSB7IHNwZWNpYWxfY291bnQrKzsgfQoKJSUKCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKICAgIGlmIChhcmdjICE9IDIpIHsKICAgICAgICBwcmludGYoIlVzYWdlOiAlcyA8ZmlsZW5hbWU+XG4iLCBhcmd2WzBdKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIEZJTEUgKmZpbGUgPSBmb3Blbihhcmd2WzFdLCAiciIpOwogICAgaWYgKCFmaWxlKSB7CiAgICAgICAgcHJpbnRmKCJFcnJvcjogQ291bGQgbm90IG9wZW4gZmlsZSAlc1xuIiwgYXJndlsxXSk7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICB5eWluID0gZmlsZTsKICAgIHl5bGV4KCk7CiAgICBmY2xvc2UoZmlsZSk7CiAgICAKICAgIHByaW50ZigiTGV0dGVyczogJWRcbiIsIGxldHRlcl9jb3VudCk7CiAgICBwcmludGYoIk51bWJlcnM6ICVkXG4iLCBkaWdpdF9jb3VudCk7CiAgICBwcmludGYoIlNwZWNpYWwgQ2hhcmFjdGVyczogJWRcbiIsIHNwZWNpYWxfY291bnQpOwogICAgcmV0dXJuIDA7Cn0KCmludCB5eXdyYXAoKSB7CiAgICByZXR1cm4gMTsKfQo=