我写了一个语法,但是当我编译它时,我遇到了冲突(由于冲突,规则在解析器中没用)。我不知道如何解决它。我不明白“emtpy”的问题。
thx,Nine
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
;
答案 0 :(得分:1)
您的作品def
和def_next
对我来说是错误的。可能很难正确编码重复项目列表的递归定义。我会这样做:
axdef : BBEGIN GKLAMMERLINKS AXDEF GKLAMMERRECHTS defs END GKLAMMERLINKS AXDEF GKLAMMERRECHTS
|
;
defs : def defs
| def
;
def : BEZEICHNER Doppelpunkt typ
;