0

我写了一个语法,但是当我编译它时,我遇到了冲突(由于冲突,规则在解析器中无用)。我不知道如何解决它。我不明白“emtpy”的问题。

谢谢,九

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
    ;
4

1 回答 1

1

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

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

defs : def defs
     | def
     ;

def : BEZEICHNER Doppelpunkt typ
    ;
于 2012-07-10T21:03:29.130 回答