我正在创建一个语法来运行控制台应用程序,使用 VSCode 或 IntelliJ 扩展,我的 .g4 语法文件一切似乎都很好。但是当我执行命令获取antlr/parser文件夹时:
antlr4 -Dlanguage=Go -o parser items.g4
我从 items_lexer.go 和 items_parser.go 文件中收到以下错误:
第一个出现在以下行中:
var lexerAtn = lexerDeserializer.DeserializeFromUInt16(serializedLexerAtn)
其中使用了上一行中声明的 var: lexerDeserializer:
var lexerDeserializer = antlr.NewATNDeserializer(nil)
这是问题的根源,由于某种原因直接来自antlr lib,未找到DeserializeFromUInt16 函数。我已经尝试过使用另一种语法。我使用的是 ANTRL 4.7.2,并且我确保在我的项目中安装了 jdk、
go get github.com/antlr/antlr4/runtime/Go/antlr
和 .jar 文件夹。
我将不胜感激任何关于如何使我的文件免受错误的建议。
我今天遇到了同样的问题,因为我使用 ANTLR 4.7 进行代码生成,并使用 v1.4.10 作为 golang 依赖项(请参阅 go.mod 文件)。
更新到 ANTLR 4.10 以进行代码生成有所帮助。