2
嗨我已经开始倾斜Bison语法分析器生成器。我尝试了下面的程序。我使用MinGW on Window 7
和mintty
客户端编译和运行程序。野牛版本2.4.2
%verbose
%error-verbose
%{
#include <cstdio>
#include <unistd.h>
#include <stdlib.h>
#include <ctype.h>
int yylex(void);
int yyerror(const char *msg);
%}
%token INT
%%
rule :
INT { $$ = $1; printf("value : %d %d %d %d\n", $1,
@1.first_line, @1.first_column, @1.last_column); }
;
%%
int main()
{
yyparse();
return 0;
}
int yylex()
{
char ch = getchar();
if(isdigit(ch))
{
ungetc(ch, stdin);
scanf("%d", &yylval);
return INT;
}
return ch;
}
int yyerror(const char *msg)
{
printf("Error : %s\n", msg);
}
我编译的程序与bison filename.y
然后gcc filename.tab.c
,当我尝试运行程序和标准输入输入5,因为它是从的yyerror函数打印我收到以下错误。任何人都可以帮助我找到我做错了什么。
Error : syntax error, unexpected $undefined, expecting $end
我建议使用flex作为词法分析器。野牛与flex的互补性非常好。 – Ctx