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 (); }