%{
#include <stdio.h>
#include <stdlib.h>
%}
%token NUM
%%
[0-9]+ { yylval = atoi(yytext); return NUM; }
"+" { return '+'; }
"-" { return '-'; }
"*" { return '*'; }
"/" { return '/'; }
"\n" { return 0; } // end of expression
[ \t] { /* Ignore whitespace */ }
%%
int main(void) {
int token;
while ((token = yylex()) != 0) {
switch (token) {
case NUM:
printf
("
Number: %d\n", yylval); break;
case '+':
printf("Addition\n");
break;
case '-':
printf("Subtraction\n");
break;
case '*':
printf("Multiplication\n");
break;
case '/':
printf("Division\n");
break;
default:
printf("Unknown token\n");
break;
}
}
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KJX0KCiV0b2tlbiBOVU0KCiUlCgpbMC05XSsgICAgICAgIHsgeXlsdmFsID0gYXRvaSh5eXRleHQpOyByZXR1cm4gTlVNOyB9CgoiKyIgICAgICAgICAgIHsgcmV0dXJuICcrJzsgfQoiLSIgICAgICAgICAgIHsgcmV0dXJuICctJzsgfQoiKiIgICAgICAgICAgIHsgcmV0dXJuICcqJzsgfQoiLyIgICAgICAgICAgIHsgcmV0dXJuICcvJzsgfQoiXG4iICAgICAgICAgIHsgcmV0dXJuIDA7IH0gIC8vIGVuZCBvZiBleHByZXNzaW9uCgpbIFx0XSAgICAgICAgICB7IC8qIElnbm9yZSB3aGl0ZXNwYWNlICovIH0KCiUlCgppbnQgbWFpbih2b2lkKSB7CiAgICBpbnQgdG9rZW47CiAgICB3aGlsZSAoKHRva2VuID0geXlsZXgoKSkgIT0gMCkgewogICAgICAgIHN3aXRjaCAodG9rZW4pIHsKICAgICAgICAgICAgY2FzZSBOVU06CiAgICAgICAgICAgICAgICBwcmludGYoIk51bWJlcjogJWRcbiIsIHl5bHZhbCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnKyc6CiAgICAgICAgICAgICAgICBwcmludGYoIkFkZGl0aW9uXG4iKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICctJzoKICAgICAgICAgICAgICAgIHByaW50ZigiU3VidHJhY3Rpb25cbiIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJyonOgogICAgICAgICAgICAgICAgcHJpbnRmKCJNdWx0aXBsaWNhdGlvblxuIik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnLyc6CiAgICAgICAgICAgICAgICBwcmludGYoIkRpdmlzaW9uXG4iKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcHJpbnRmKCJVbmtub3duIHRva2VuXG4iKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9Cg==