Go中的AntLR4:无效的类型声明:侦听器

时间:2018-11-01 11:44:24

标签: go antlr antlr4

我从Antlr4语法为Go语言生成了解析器。

语法在这里: https://raw.githubusercontent.com/antlr/grammars-v4/master/solidity/Solidity.g4

我生成解析器,如下所示:     java -jar $ PWD / antlr-4.7.1-complete.jar -Dlanguage = Go -o解析器语法/Solidity.g4

无论solidity_parser.go出现在哪里,生成的listener.(SolidityListener)文件都会出现以下错误:

无效的类型断言:侦听器。(SolidityListener)(非接口类型antlr.ParseTreeListener在左侧)

代码段: func (s *SourceUnitContext) EnterRule(listener antlr.ParseTreeListener) { if listenerT, ok := listener.(SolidityListener); ok { // <-- here is the error listenerT.EnterSourceUnit(s) } }

可能是什么问题?

1 个答案:

答案 0 :(得分:1)

can not find declaration to go

我遇到了同样的问题。原因是go找不到接口定义,只需运行go get github.com/antlr/antlr4/runtime/Go/antlr就可以解决问题。