%{
#include <stdio.h>
%}
 
/* Definitions */
NUMBER      [0-9]+(\
.[0-9]+)?   
/* integers or decimals */ WS          [ \t]+              /* whitespace */
 
%%
 
{WS}        ;                               /* ignore whitespace */
"+"         { printf("PLUS(+)\n"); }
"-"         { printf("MINUS(-)\n"); }
"*"         { printf("MULT(*)\n"); }
"/"         { printf("DIV(/)\n"); }
"("         { printf("LPAREN(()\n"); }
")"         { printf("RPAREN())\n"); }
.           { printf("UNKNOWN(%s)\n", yytext); }
 
%%
 
int main() {
    printf("Enter an arithmetic expression:\n");
    yylex();
    return 0;
}
 
int yywrap() {
    return 1;
}
 
				JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiV9CgovKiBEZWZpbml0aW9ucyAqLwpOVU1CRVIgICAgICBbMC05XSsoXC5bMC05XSspPyAgIC8qIGludGVnZXJzIG9yIGRlY2ltYWxzICovCldTICAgICAgICAgIFsgXHRdKyAgICAgICAgICAgICAgLyogd2hpdGVzcGFjZSAqLwoKJSUKCntXU30gICAgICAgIDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaWdub3JlIHdoaXRlc3BhY2UgKi8Ke05VTUJFUn0gICAgeyBwcmludGYoIk5VTUJFUiglcylcbiIsIHl5dGV4dCk7IH0KIisiICAgICAgICAgeyBwcmludGYoIlBMVVMoKylcbiIpOyB9CiItIiAgICAgICAgIHsgcHJpbnRmKCJNSU5VUygtKVxuIik7IH0KIioiICAgICAgICAgeyBwcmludGYoIk1VTFQoKilcbiIpOyB9CiIvIiAgICAgICAgIHsgcHJpbnRmKCJESVYoLylcbiIpOyB9CiIoIiAgICAgICAgIHsgcHJpbnRmKCJMUEFSRU4oKClcbiIpOyB9CiIpIiAgICAgICAgIHsgcHJpbnRmKCJSUEFSRU4oKSlcbiIpOyB9Ci4gICAgICAgICAgIHsgcHJpbnRmKCJVTktOT1dOKCVzKVxuIiwgeXl0ZXh0KTsgfQoKJSUKCmludCBtYWluKCkgewogICAgcHJpbnRmKCJFbnRlciBhbiBhcml0aG1ldGljIGV4cHJlc3Npb246XG4iKTsKICAgIHl5bGV4KCk7CiAgICByZXR1cm4gMDsKfQoKaW50IHl5d3JhcCgpIHsKICAgIHJldHVybiAxOwp9Cg==