我想知道如何解决此错误?
以下几组规则是相互左递归的[type,array_type]
目标是实现以下目标:
(数组类型) type -> type [ expr ]
应该包含在type参数中。任何帮助将不胜感激
以下代码:
// Types
type
: atomic_type
| named_type
| pointer_type
| record_type
| enclosed_type
| array_type
;
atomic_type
: VOID
| CHAR
| INTEGER
| BOOLEAN
;
named_type
: IDENTIFIER
;
// LEFT SIDE RECURSION, SHOULD BE INCLUDED IN TYPE ABOVE
array_type
: type MLBRACE expr MRBRACE
;
pointer_type
: CARET type
;
record_type
: BLBRACE IDENTIFIER COLON type BLBRACE (COMMA? IDENTIFIER COLON type) BRBRACE BRBRACE
;
enclosed_type
: SLBRACE type SRBRACE
;
编辑: 我已经在:
type
: atomic_type
| named_type
| pointer_type
| record_type
| enclosed_type
| type MLBRACE expr MRBRACE
;
但是我的问题是,有可能用array_type
代替type MLBRACE expr MRBRACE
吗?
答案 0 :(得分:1)
否,那是不可能的。您不能在ANTLR4期间使用间接左递归。