你好,我剛剛開始在bison/yacc中做一些解析。現在我的第一個程序已經失敗。什麼地方出了錯?我使用的是例如由: original source of tutorial用簡單的計算器語法解決衝突轉換/減少
%{
#include <stdio.h>
int yylex(void);
void yyerror(char *);
%}
%token INTEGER
%%
program:
program expr '\n' { printf("%d\n", $2); }
|
;
expr:
INTEGER { $$ = $1; }
| expr '+' expr { $$ = $1 + $3; }
| expr '-' expr { $$ = $1 - $3; }
;
%%
void yyerror(char *s) {
fprintf(stderr, "%s\n", s);
}
int main(void) {
yyparse();
return 0;
}
使用野牛的2.4.1版本,我得到這個錯誤:
conflicts: 4 shift/reduce
[AIX文檔yacc](http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.genprogc%2Fdoc%2Fgenprogc%2Fie_prog_4lex_yacc.htm )解釋我的問題。我的語法是模糊的 – elcojon