我想为简单的计算器制作解析器,但我无法理解我在简单输入时遇到错误。Flex 文件看起来像这样
%{
#include "exp.tab.h"
#include <string.h>
%}
blanks [ \t\n]+
%%
{blanks} { /* ignore */ }
[0-9]+ {yylval= strtol(yytext, NULL, 10);
return(NUMB);}
%%
Bison 文件如下所示:
%{
#include <stdio.h>
%}
%token NUMB
%left '+'
%%
exp:
NUMB { $$ = $1; }
| exp '+' exp { $$ = $1 + $3; }
%%
int yyerror(char *s) {
printf("yyerror : %s\n",s);
}
int main(void) {
yyparse();
}
用于输入
123 + 12
我收到错误消息。为什么会这样?