我从Antlr4语法中为Go语言生成了Parser。
语法在这里:https://raw.githubusercontent.com/antlr/grammars-v4/master/solidity/Solidity.g4
我生成解析器如下: java -jar $PWD/antlr-4.7.1- -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) } }
有什么问题吗?
发布于 2019-07-02 14:59:41

我也遇到了同样的问题。原因是go找不到接口定义,只要运行go get github.com/antlr/antlr4/runtime/Go/antlr就可以解决问题。
https://stackoverflow.com/questions/53100633
复制相似问题