%{
#include "y.tab.h"
%}
%%
"int" { return INT; }
"while" { return WHILE; }
"for" { return FOR; }
"print" { return PRINT; }
"def" { return DEF; }
"return" { return RETURN; }
[a-zA-Z_][a-zA-Z0-9_]* { yylval.str = strdup(yytext); return IDENTIFIER; }
[0-9]+ { yylval
.num
= atoi
(yytext
); return
NUMBER; } "{" { return LBRACE; }
"}" { return RBRACE; }
"(" { return LPAREN; }
")" { return RPAREN; }
";" { return SEMICOLON; }
"+" | "-" | "*" | "/" { return OPERATOR; }
[ \t\n]+ { /* Ignore whitespace */ }
. { return yytext[0]; }
%%
JXsKI2luY2x1ZGUgInkudGFiLmgiCiV9CgolJQoiaW50IiAgICAgICB7IHJldHVybiBJTlQ7IH0KIndoaWxlIiAgICAgeyByZXR1cm4gV0hJTEU7IH0KImZvciIgICAgICAgeyByZXR1cm4gRk9SOyB9CiJwcmludCIgICAgIHsgcmV0dXJuIFBSSU5UOyB9CiJkZWYiICAgICAgIHsgcmV0dXJuIERFRjsgfQoicmV0dXJuIiAgICB7IHJldHVybiBSRVRVUk47IH0KW2EtekEtWl9dW2EtekEtWjAtOV9dKiB7IHl5bHZhbC5zdHIgPSBzdHJkdXAoeXl0ZXh0KTsgcmV0dXJuIElERU5USUZJRVI7IH0KWzAtOV0rICAgICAgeyB5eWx2YWwubnVtID0gYXRvaSh5eXRleHQpOyByZXR1cm4gTlVNQkVSOyB9CiJ7IiAgICAgICAgIHsgcmV0dXJuIExCUkFDRTsgfQoifSIgICAgICAgICB7IHJldHVybiBSQlJBQ0U7IH0KIigiICAgICAgICAgeyByZXR1cm4gTFBBUkVOOyB9CiIpIiAgICAgICAgIHsgcmV0dXJuIFJQQVJFTjsgfQoiOyIgICAgICAgICB7IHJldHVybiBTRU1JQ09MT047IH0KIisiIHwgIi0iIHwgIioiIHwgIi8iIHsgcmV0dXJuIE9QRVJBVE9SOyB9ClsgXHRcbl0rICAgIHsgLyogSWdub3JlIHdoaXRlc3BhY2UgKi8gfQouICAgICAgICAgICB7IHJldHVybiB5eXRleHRbMF07IH0KJSUK