ANTLR在4.5版本中无法生成Javascript代码。

5
当我尝试为我的语法生成监听器/访问者时,我遇到以下错误:ANTLR在4.5版本中无法生成JavaScript代码。
有人知道如何修复吗?我仍然可以生成C#和Java代码。

找不到任何关于这个事实的提示。旧版本如4.4和4.3也无法工作。 - Bruno
1
https://github.com/antlr/antlr4/releases 根据这里的说明,应该可以工作。 - Bruno
4个回答

22

来自文档

这与创建Java词法解析器或语法解析器基本相同,只是需要指定目标语言,例如:

$ antlr4 -Dlanguage=JavaScript MyGrammar.g4

要查看antlr4工具选项的完整列表,请访问工具文档页面。

可能你的目标是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]

没错,应该是“JavaScript”,大小写要完全一致。语言目标列表 - Odysseas

3
你需要使用 "JavaScript",而不是 "Javascript"。
支持的语言的确切语言值为:
Java:
antlr4 -Dlanguage=Java MyGrammar.g4

JavaScript:
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

Go:

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,请点击相关语言链接查看。


1
我曾经在使用ATNLR解析Java中的Hive查询时遇到了类似的问题。事实证明,我犯了一个小错误,就是大小写问题。我应该使用Java而不是java

$>antlr -Dlanguage=java Hplsql.g4 -->error(31): ANTLR无法生成版本为4.7.1的Java代码

$>antlr -Dlanguage=Java Hplsql.g4 -->成功


1
我试图执行以下命令:
antlr4 Arithmetic.g4 -Dlanguage=cSharp 但是我收到了以下信息:
ANTLR版本4.12.0无法生成cSharp代码。
我找到了问题所在。Antlr语言是区分大小写的。
这个命令可以正常工作:
antlr4 Arithmetic.g4 -Dlanguage=CSharp 希望这能帮助其他人。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接