/*计算器的最简版本*/%{#include<stdio.h>voidyyerror();intyylex();voidmain();%}/* declare tokens */%token NUMBER
%token ADD SUB MUL DIV ABS
%token EOL
%%
calclist:/*空规则*///从输人开头进行匹配| calclist exp EOL {printf("= %d\n", $2);}//EOL代表-一个表达式的结束;
exp : factor {$$ = $1;}|exp ADD factor {$$=$1+$3;}|exp SUB factor {$$=$1-$3;};
factor: term {$$ = $1;}|factor MUL term {$$=$1*$3;}|factor DIV term {$$=$1/$3;};
term: NUMBER {$$ = $1;}| ABS term {$$=$2>=0?$2:-$2;};%%voidmain(int argc,char**argv){yyparse();}voidyyerror(char*s){fprintf(stderr,"error:%s\n",s);}