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