%{
#include <stdio.h>
#include <stdlib.h>
int ntoken=0;
%}
%%
[ \t\n]+ ;
[0-9]+(\
.[0-9]+)?
{ ntoken
++; printf
("
NUMBER(%s) ", yytext); } [A-Za-z_][A-Za-z0-9_]* { ntoken++; printf("IDENTIFIER(%s) ", yytext); }
"+"|"-"|"*"|"/"|"="|"=="|"!="|"<"|">"|"<="|">=" { ntoken++; printf("OPERATOR(%s) ", yytext); }
"(" { ntoken++; printf("LPAREN "); }
")" { ntoken++; printf("RPAREN "); }
"{" { ntoken++; printf("LCURLY "); }
"}" { ntoken++; printf("RCURLY "); }
";" { ntoken++; printf("SEMICOLON "); }
"," { ntoken++; printf("COMMA "); }
. { ntoken++; printf("UNKNOWN(%s) ", yytext); }
%%
int main()
{
char input[1024];
printf("Enter input: ");
fgets(input, sizeof(input), stdin);
YY_BUFFER_STATE buffer = yy_scan_string(input);
yylex();
yy_delete_buffer(buffer);
printf
("\nTotal
number of tokens
= %d\n", ntoken); return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KaW50IG50b2tlbj0wOwolfQolJQpbIFx0XG5dKyAgICAgOwpbMC05XSsoXC5bMC05XSspPyAgICB7IG50b2tlbisrOyBwcmludGYoIk5VTUJFUiglcykgIiwgeXl0ZXh0KTsgfQpbQS1aYS16X11bQS1aYS16MC05X10qICB7IG50b2tlbisrOyBwcmludGYoIklERU5USUZJRVIoJXMpICIsIHl5dGV4dCk7IH0KIisifCItInwiKiJ8Ii8ifCI9InwiPT0ifCIhPSJ8IjwifCI+InwiPD0ifCI+PSIgIHsgbnRva2VuKys7IHByaW50ZigiT1BFUkFUT1IoJXMpICIsIHl5dGV4dCk7IH0KIigiICB7IG50b2tlbisrOyBwcmludGYoIkxQQVJFTiAiKTsgfQoiKSIgIHsgbnRva2VuKys7IHByaW50ZigiUlBBUkVOICIpOyB9CiJ7IiAgeyBudG9rZW4rKzsgcHJpbnRmKCJMQ1VSTFkgIik7IH0KIn0iICB7IG50b2tlbisrOyBwcmludGYoIlJDVVJMWSAiKTsgfQoiOyIgIHsgbnRva2VuKys7IHByaW50ZigiU0VNSUNPTE9OICIpOyB9CiIsIiAgeyBudG9rZW4rKzsgcHJpbnRmKCJDT01NQSAiKTsgfQouICAgIHsgbnRva2VuKys7IHByaW50ZigiVU5LTk9XTiglcykgIiwgeXl0ZXh0KTsgfQolJQppbnQgbWFpbigpCnsKICAgIGNoYXIgaW5wdXRbMTAyNF07CiAgICBwcmludGYoIkVudGVyIGlucHV0OiAiKTsKICAgIGZnZXRzKGlucHV0LCBzaXplb2YoaW5wdXQpLCBzdGRpbik7CiAgICBZWV9CVUZGRVJfU1RBVEUgYnVmZmVyID0geXlfc2Nhbl9zdHJpbmcoaW5wdXQpOwogICAgeXlsZXgoKTsKICAgIHl5X2RlbGV0ZV9idWZmZXIoYnVmZmVyKTsKICAgIHByaW50ZigiXG5Ub3RhbCBudW1iZXIgb2YgdG9rZW5zID0gJWRcbiIsIG50b2tlbik7CiAgICByZXR1cm4gMDsKfQoK