XText正确开启回溯
XText Turn on Backtracking Correctly
我在 X-Text 中有大量语法,其中有一些歧义。我完全清楚这会导致的问题,但我希望能够在考虑优化语法之前测试语法。
我一直在尝试在 X-Text 工作流程中打开回溯,但似乎无法管理它。我在主项目下的 mwe2 文件中有以下代码:
language = StandardLanguage {
fragment=parser.antlr.XtextAntlrGeneratorFragment2 auto-inject{
options = {
backtrack= true
}
}
fragment=idea.parser.antlr.XtextAntlrIDEAGeneratorFragment auto-inject{
options={
backtrack=true
}
}
...
但我仍然收到以下格式的错误:
error(211): ../org.xtext.example.CSPTest/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1183:2: [fatal] rule ruleAny 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.
如何正确打开回溯以防止这种情况发生?
对于新的生成器,正确的设置是:
parserGenerator = {
options = {
backtrack = true
}
}
我在 X-Text 中有大量语法,其中有一些歧义。我完全清楚这会导致的问题,但我希望能够在考虑优化语法之前测试语法。
我一直在尝试在 X-Text 工作流程中打开回溯,但似乎无法管理它。我在主项目下的 mwe2 文件中有以下代码:
language = StandardLanguage {
fragment=parser.antlr.XtextAntlrGeneratorFragment2 auto-inject{
options = {
backtrack= true
}
}
fragment=idea.parser.antlr.XtextAntlrIDEAGeneratorFragment auto-inject{
options={
backtrack=true
}
}
...
但我仍然收到以下格式的错误:
error(211): ../org.xtext.example.CSPTest/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1183:2: [fatal] rule ruleAny 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.
如何正确打开回溯以防止这种情况发生?
对于新的生成器,正确的设置是:
parserGenerator = {
options = {
backtrack = true
}
}