【发布时间】:2018-07-12 00:24:40
【问题描述】:
我在使用 xtext 时遇到了一个大问题,我真的不知道如何解决它,所以我正在使用一小部分语法:
typename:
IDENTIFIER=IDENTIFIER | qualified_ident=qualified_ident
;
qualified_ident:
packagename "." IDENTIFIER
;
packagename:
IDENTIFIER
;
terminal IDENTIFIER:
LETTER (LETTER | DECIMAL_DIGIT)*
;
terminal LETTER:
'a' .. 'z' | 'A' .. 'Z' | "_"
;
terminal DECIMAL_DIGIT:
'0' .. '9'
;
还有我在 Eclipse 上遇到的错误:
error(211): ../org.xtext.example.mydsl/src-
gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:7253:2:
[fatal] rule ruletypename has non-LL(*) decision due to recursive rule
invocations reachable from alts 1,2. Resolve by left-factoring or using
syntactic predicates or using backtrack=true option.
它说语法已经离开递归,但我看不到它,我不知道如何解决这个问题。我在整个语法上都遇到了这样的问题,但我相信如果有人向我解释如何解决这个问题,我可以解决剩下的问题。
更新:你可以看到整个语法here
【问题讨论】:
-
你能分享一个完整的最小复制语法吗?你发布的sn-p很好
-
@ChristianDietrich 这是整个语法github.com/saviofelixmuniz/compiladores20181/blob/master/…
-
我想要一个“最小”的语法是有原因的
标签: grammar xtext left-recursion