/* file: token_recognizer.l */
%{
#include <stdio.h>
%}
DIGIT [0-9]
ID [A-Za-z_][A-Za-z0-9_]*
WS [ \t]+
%%
"if" { printf("<KEYWORD, %s>\n", yytext); }
"else" { printf("<KEYWORD, %s>\n", yytext); }
{ID} { printf("<IDENT, %s>\n", yytext); }
{DIGIT
}+ { printf
("
<NUMBER, %s>\n", yytext); } "
+"
|"
-"
|"
*"
|"
/"
{ printf
("
<OP, %s>\n", yytext); }";" { printf("<SEMICOLON>\n"); }
{WS} { /* ignore whitespace */ }
\n { /* treat newline separately if needed */ }
. { printf("<UNKNOWN, %s>\n", yytext); }
%%
int main(void){
yylex();
return 0;
}
LyogZmlsZTogdG9rZW5fcmVjb2duaXplci5sICovCiV7CiNpbmNsdWRlIDxzdGRpby5oPgolfQoKRElHSVQgICBbMC05XQpJRCAgICAgIFtBLVphLXpfXVtBLVphLXowLTlfXSoKV1MgICAgICBbIFx0XSsKCiUlCiJpZiIgICAgICAgICAgICB7IHByaW50ZigiPEtFWVdPUkQsICVzPlxuIiwgeXl0ZXh0KTsgfQoiZWxzZSIgICAgICAgICAgeyBwcmludGYoIjxLRVlXT1JELCAlcz5cbiIsIHl5dGV4dCk7IH0Ke0lEfSAgICAgICAgICAgIHsgcHJpbnRmKCI8SURFTlQsICVzPlxuIiwgeXl0ZXh0KTsgfQp7RElHSVR9KyAgICAgICAgeyBwcmludGYoIjxOVU1CRVIsICVzPlxuIiwgeXl0ZXh0KTsgfQoiKyJ8Ii0ifCIqInwiLyIgIHsgcHJpbnRmKCI8T1AsICVzPlxuIiwgeXl0ZXh0KTsgfQoiOyIgICAgICAgICAgICAgeyBwcmludGYoIjxTRU1JQ09MT04+XG4iKTsgfQp7V1N9ICAgICAgICAgICAgeyAvKiBpZ25vcmUgd2hpdGVzcGFjZSAqLyB9ClxuICAgICAgICAgICAgICB7IC8qIHRyZWF0IG5ld2xpbmUgc2VwYXJhdGVseSBpZiBuZWVkZWQgKi8gfQouICAgICAgICAgICAgICAgeyBwcmludGYoIjxVTktOT1dOLCAlcz5cbiIsIHl5dGV4dCk7IH0KJSUKCmludCBtYWluKHZvaWQpewogIHl5bGV4KCk7CiAgcmV0dXJuIDA7Cn0K