从 4.5 版开始,ANTLR 无法生成 Javascript 代码

ANTLR cannot generate Javascript code as of version 4.5

当我尝试为我的语法生成 listener/visitor ... 时,我收到以下错误:ANTLR 无法生成 Java 从 4.5 版开始的脚本代码

有人知道怎么解决吗?我仍然可以生成 C# 和 Java 代码。

来自the docs

This is pretty much the same as creating a Java lexer or parser, except you need to specify the language target, for example:

$ antlr4 -Dlanguage=JavaScript MyGrammar.g4

For a full list of antlr4 tool options, please visit the tool documentation page.

您的目标可能是 Javascript 而不是所需的 JavaScript(注意大小写);观察我执行两者时的区别:

╭─{ yaauie@celeborn:~/Desktop/tmp-20160108 }
╰─○ antlr4 -Dlanguage=JavaScript Hello.g4
[success]

╭─{ yaauie@celeborn:~/Desktop/tmp-20160108 }
╰─○ antlr4 -Dlanguage=Javascript Hello.g4
error(31):  ANTLR cannot generate Javascript code as of version 4.5.1
[error: 1]

我在与 ATNLR 合作解析 java 中的配置单元查询时遇到了类似的问题。原来是我漏了案子。我写的不是 Java java

$>antlr -Dlanguage=java Hplsql.g4 -->error(31): ANTLR cannot generate java code as of version 4.7.1

$>antlr -Dlanguage=Java Hplsql.g4 -->Success

您需要 "JavaScript",而不是 "Javascript"。

受支持语言的确切语言值是:

Java:

antlr4 -Dlanguage=Java MyGrammar.g4

Java脚本:

antlr4 -Dlanguage=JavaScript MyGrammar.g4

C#:

antlr4 -Dlanguage=CSharp MyGrammar.g4

Python 3:

antlr4 -Dlanguage=Python3 MyGrammar.g4

Python 2:

antlr4 -Dlanguage=Python2 MyGrammar.g4

开始:

antlr4 -Dlanguage=Go MyGrammar.g4

C++:

antlr4 -Dlanguage=Cpp MyGrammar.g4

Swift:

antlr4 -Dlanguage=Swift MyGrammar.g4 

PHP:

antlr4 -Dlanguage=PHP MyGrammar.g4

来源:https://github.com/antlr/antlr4/blob/master/doc/targets.md 并点击特定语言的链接。