Prolog 用語を解析しようとしていますが、ルールは次のとおりです。
term[ReadOptions Options, int priority]
:
simpleTerm[$Options]
|
term[$Options, $priority - 1]
;
ただし、ANTLR を実行すると、次のエラーがスローされます。
can't find rule grammarSpec or tree structure error:
...My complete code here...
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
org.antlr.v4.parse.GrammarTreeVisitor.visit(GrammarTreeVisitor.java:206)
org.antlr.v4.parse.GrammarTreeVisitor.visitGrammar(GrammarTreeVisitor.java:200)
org.antlr.v4.semantics.SymbolCollector.process(SymbolCollector.java:76)
org.antlr.v4.semantics.SemanticPipeline.process(SemanticPipeline.java:103)
org.antlr.v4.Tool.processNonCombinedGrammar(Tool.java:399)
...
org.antlr.v4.tool.LeftRecursiveRule.getAltLabels(LeftRecursiveRule.java:91)
org.antlr.v4.tool.Rule.hasAltSpecificContexts(Rule.java:200)
org.antlr.v4.tool.LeftRecursiveRule.hasAltSpecificContexts(LeftRecursiveRule.java:60)
org.antlr.v4.semantics.SymbolChecks.checkForLabelConflicts(SymbolChecks.java:150)
org.antlr.v4.semantics.SymbolChecks.process(SymbolChecks.java:98)
org.antlr.v4.semantics.SemanticPipeline.process(SemanticPipeline.java:107)
org.antlr.v4.Tool.processNonCombinedGrammar(Tool.java:399)
org.antlr.v4.Tool.process(Tool.java:384)
org.antlr.v4.Tool.processGrammarsOnCommandLine(Tool.java:343)
org.antlr.v4.Tool.main(Tool.java:190)
ルールの最後の行を削除すると、すべてのエラーが削除されます。私が書いたら
term[ReadOptions Options, int priority]
:
simpleTerm[$Options]
;
ANTLR4 は、直接左再帰のみが関与するような文法を処理できるはずではありませんか?