野牛规则在解析器中由于冲突而无用
问题描述:
我写了一个语法,但是当我编译它时,我得到了一个冲突(规则在解析器中由于冲突而无用)。我不知道如何解决它。我不明白“emtpy”的问题。野牛规则在解析器中由于冲突而无用
THX,九件
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_next
看我错了。正确编码重复项目列表的递归定义可能很困难。我会这样做:
axdef : BBEGIN GKLAMMERLINKS AXDEF GKLAMMERRECHTS defs END GKLAMMERLINKS AXDEF GKLAMMERRECHTS
|
;
defs : def defs
| def
;
def : BEZEICHNER Doppelpunkt typ
;
basistypen是无用的,因为它没有在您的语法中的任何地方被引用。 Basistyp真的应该是basistypen吗?我看不出任何冲突。 – Craig 2012-07-11 20:32:51