AntLR4 в Go: неверное утверждение типа: слушатель - PullRequest
0 голосов
/ 01 ноября 2018

Я сгенерировал 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) } }

В чем может быть проблема?

1 Ответ

0 голосов
/ 02 июля 2019

can not find declaration to go

Я встретил ту же проблему. Причина в том, что go не может найти определение интерфейса, просто запустите go get github.com/antlr/antlr4/runtime/Go/antlr, чтобы решить проблему.

...