parser.y :
%token NUM %left '-' '+' %% input : | input line ; line : exp '\n' { printf ("%d\n", $1); } exp : NUM { $$ = $1; } | exp '+' exp { $$ = $1 + $3; } | exp '-' exp { $$ = $1 - $3; } ; %% |
scanner.l :
%{ #include "parser.tab.h" %} %% [0-9]+ { yylval = atoi (yytext); return NUM; } [-+*/^()] { return yytext[0]; } |
interpreter.c
:
int main (int argc, char ** argv) { yyparse (); }