bison规则因冲突在解析器中无效
我编写了一个语法,但当我编译它时,我得到了一个冲突(由于冲突,规则在解析器中无用)。我不知道怎么解决它。我不理解“emtpy”的问题 九点bison规则因冲突在解析器中无效,bison,rule,Bison,Rule,我编写了一个语法,但当我编译它时,我得到了一个冲突(由于冲突,规则在解析器中无用)。我不知道怎么解决它。我不理解“emtpy”的问题 九点 axdef : BBEGIN GKLAMMERLINKS AXDEF GKLAMMERRECHTS def END GKLAMMERLINKS AXDEF GKLAMMERRECHTS | ; def : BEZEICHNER Doppelpunkt typ def_next ; def_next : def
axdef : BBEGIN GKLAMMERLINKS AXDEF GKLAMMERRECHTS def END GKLAMMERLINKS AXDEF GKLAMMERRECHTS
|
;
def : BEZEICHNER Doppelpunkt typ def_next
;
def_next : def
|
;
typ : basistyp
| typ_power
| FINSET basistyp
| typ_function
;
basistypen : NAT
| INTEGER
| REAL
| BOOL
| BEZEICHNER
;
typ_power : POWER basistyp
;
typ_function : BEZEICHNER FUN BEZEICHNER
| BEZEICHNER FUN POWER BEZEICHNER
| KLAMMERAUF BEZEICHNER TIMES BEZEICHNER KLAMMERZU fun POWER BEZEICHNER
;
fun : PFUNCTION
| PINJ
| PSUR
| TFUNCTION
| TINJ
| SURJ
| FFUN
| FINJ
| BIJ
;
我觉得你的作品
def
和def\u next
有问题。对重复项列表的递归定义进行正确编码可能很困难。我会这样做:
axdef : BBEGIN GKLAMMERLINKS AXDEF GKLAMMERRECHTS defs END GKLAMMERLINKS AXDEF GKLAMMERRECHTS
|
;
defs : def defs
| def
;
def : BEZEICHNER Doppelpunkt typ
;
basistypen是无用的,因为它在语法中的任何地方都没有引用。basistyp真的应该是basistypen吗?我看不出任何冲突。