/* 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