再次修改。删除递归后,为中缀表达式编写代码:它还包含优先级检查,没有递归语法,没有开始非终端,还有一个错误消息。
%{
#include<stdio.h>
%}
%token ALPHA NUMBER PLUS MINUS MUL DIV LPAR RPAR
%%
expr : expr PLUS term { printf("its an infix expression"); }
| expr MINUS term
| term
;
term : term MUL factor
| term DIV factor
| factor
;
factor : LPAR expr RPAR
| NUMBER
| ALPHA
;
%%
main()
{
yyparse();
}
int yyerror (char *s)
{
printf("Not an infix expression");
}
现在可以了吗?