由于冲突,野牛规则在解析器中无用

时间:2012-07-10 18:16:36

标签: bison rule

我写了一个语法,但是当我编译它时,我遇到了冲突(由于冲突,规则在解析器中没用)。我不知道如何解决它。我不明白“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
    ;

1 个答案:

答案 0 :(得分:1)

您的作品defdef_next对我来说是错误的。可能很难正确编码重复项目列表的递归定义。我会这样做:

axdef : BBEGIN GKLAMMERLINKS AXDEF GKLAMMERRECHTS defs END GKLAMMERLINKS AXDEF GKLAMMERRECHTS
      |
      ;

defs : def defs
     | def
     ;

def : BEZEICHNER Doppelpunkt typ
    ;