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

问题描述 投票:0回答:4

当我尝试为我的语法生成侦听器/访问者时,我收到以下错误:从 4.5 版开始,ANTLR 无法生成 Javascript 代码

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

javascript antlr antlr4
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]

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


1
投票

你需要“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

去:

antlr4 -Dlanguage=Go MyGrammar.g4

C++:

antlr4 -Dlanguage=Cpp MyGrammar.g4

斯威夫特:

antlr4 -Dlanguage=Swift MyGrammar.g4 

PHP:

antlr4 -Dlanguage=PHP MyGrammar.g4

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


0
投票

我试图执行:

antlr4 Arithmetic.g4 -Dlanguage=cSharp

我收到一条消息:

从 4.12.0 版开始,ANTLR 无法生成 cSharp 代码

刚发现问题。 Antlr 语言是 CASE SENSITIVE

这有效:

antlr4 Arithmetic.g4 -Dlanguage=CSharp

我希望这对其他人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.