Я сгенерировал Parser для языка Go из грамматики Antlr4.
Грамматика здесь:
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)
появляется:
Недопустимое утверждение типа: listener. (SolidityListener) (неинтерфейсный тип antlr.ParseTreeListener слева)
Фрагмент кода:
func (s *SourceUnitContext) EnterRule(listener antlr.ParseTreeListener) {
if listenerT, ok := listener.(SolidityListener); ok { // <-- here is the error
listenerT.EnterSourceUnit(s)
}
}
В чем может быть проблема?