当我尝试为我的语法生成侦听器/访问者时,我收到以下错误:从 4.5 版开始,ANTLR 无法生成 Javascript 代码
有人知道怎么解决吗?我仍然可以生成 C# 和 Java 代码。
来自文档:
这与创建 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]
我正在与 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
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 并点击特定语言的链接。
我试图执行:
antlr4 Arithmetic.g4 -Dlanguage=cSharp
我收到一条消息:
从 4.12.0 版开始,ANTLR 无法生成 cSharp 代码
刚发现问题。 Antlr 语言是 CASE SENSITIVE
这有效:
antlr4 Arithmetic.g4 -Dlanguage=CSharp
我希望这对其他人有帮助。