0
這是我的野牛解析器代碼。野牛表達式解析失敗C++
statement
: compound_statement
| expression_statement
;
expression_statement
: ';'
| expression ';' {cout<<"expr found\n";}
;
expression
: number_expression {cout << "number expression\n";}
;
number_expression
: number_arith_expression {cout << "arith expression\n";}
;
number_arith_expression
: number_idenfiers
| number_constants
| number_arith_expression number_arith_expression '+' { cout<<"found\n";}
| number_arith_expression number_arith_expression '-' {}
;
number_idenfiers
: PPNUMVAR {}
| PPSYSNUMVAR {}
;
number_constants
: PPFLOAT {}
;
我給表達
23 23 +;
我的結果是:
發現
ARITH表達
數量表達
行號:1 ..解析錯誤
爲什麼它不解析expression_statment?它不解析SEMICOLON。我應該更改以使用分號?
最有可能的是您的詞法掃描儀不正確地返回分號令牌,但很難知道沒有看到掃描儀。爲什麼不使用bison的內置調試工具,它會給你更多的信息,包括它實際看到的令牌。請參閱https://www.gnu.org/software/bison/manual/bison.html#Enabling-Traces – rici
謝謝rici。 –