В чем заключается ошибка «правила синтаксического анализатора« каналы », запрещенные в лексере» в этом файле ANTLR 4 Lexer?

0

Я пытаюсь создать Parser и Lexer из файлов MySQL.g4 по адресу https://github.com/antlr/grammars-v4/tree/master/mysql. Я получаю сообщение об ошибке "правила парсера", которые не разрешены в lexer ", как показано на прилагаемом изображении.

Изображение 174551

Теги:
antlr4

1 ответ

1

Только грамматики Lexer могут содержать только лексерские правила. Я думаю, что здесь происходит то, что инструмент, который вы используете, интерпретирует channels "правила" в качестве правила парсера, потому что он начинается не с прописной буквы и поэтому неуместен в этой грамматике только для лексера.

Однако комментарий Майка правильный. Эта структура channels (в настоящее время) является допустимой грамматикой ANTLR для файла lexer. См. Эту страницу. , Предполагается, что он входит в файл грамматики lexer, поэтому единственное, что я могу догадаться об ошибке, которую вы получаете, это то, что используемый вами инструмент (IDE) не понимает синтаксис спецификаций channels.

Имейте в виду, что не всякая грамматика в этом списке github является совершенной и не является частью ANTLR, но внесены различными авторами, а иногда и разными версиями ANTLR, чем тот, который вы используете в любой момент.

  • 2
    channels - это не правило, а список каналов, поддерживаемый грамматикой и действительный только в грамматике лексера.
  • 0
    Это идет в файле Parser?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню