我正在使用 Bison(AFAIK 他们LL(1)
默认使用解析)。
我的语法是这样说的:
function_decl: ID '(' params ')' ':' TYPE ... // body may go here
function_call: ID '(' arguments ')'
params: ID ':' TYPE
| params ',' ID ':' TYPE
| %empty
arguments: ID
| arguments ',' ID
| %empty
现在,bison
警告说reduce/reduce
冲突,因为params
两者arguments
都可以为空(在零参数的情况下function()
)。
我的问题是,我怎样才能消除(而不是压制)这种冲突?
尽管有人建议使用不同的解析技术,但如果可能(我应该这样做),我想对自己说清楚,或者我应该忽略它。