我想写入BNF形式的LR(1)的语法用于通过这两个规则从The Complete Syntax of Lua描述的语言:LR(1)BNF语法功能参数与后省略号
parlist ::= namelist [`,´ `...´] | `...´
namelist ::= Name {`,´ Name}
我试图下面的语法,但根据我使用的工具,两者都是 “不LR(1)由于SHIFT-减少冲突”:
parlist ::= namelist
parlist ::= namelist , ...
parlist ::= ...
namelist ::= Name namelist1
namelist1 ::= , Name namelist1
namelist1 ::= <epsilon>
parlist ::= namelist
parlist ::= namelist , ...
parlist ::= ...
namelist ::= namelist1 Name
namelist1 ::= namelist1 Name ,
namelist1 ::= <epsilon>
对于这种语言,是否有BN(BNF)形式的LR(1)语法?
为什么不使用'namelist :: = Name'和'namelist :: = namelist,Name'规则? –