当我尝试生成监听器/访问者时。。。对于我的Grammar,我得到了以下错误:ANTLR无法生成4.5版的Javascript代码
有人知道怎么修吗?我仍然可以生成C#和Java代码。
来自文档:
这与创建Java lexer或解析器几乎相同,只是需要指定语言目标,例如:
$ 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",而不是"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
Swift:
antlr4 -Dlanguage=Swift MyGrammar.g4
PHP:
antlr4 -Dlanguage=PHP MyGrammar.g4
来源:https://github.com/antlr/antlr4/blob/master/doc/targets.md并遵循特定语言的链接。
我使用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
我试图执行:
antlr4 Arithmetic.g4 -Dlanguage=cSharp
我收到一条消息:
从版本4.12.0 起,ANTLR无法生成cSharp代码
刚刚发现问题。Antlr语言是区分大小写
这项工作:
antlr4 Arithmetic.g4-D语言=CSharp
我希望这能帮助其他人。