Я пытаюсь создать Parser и Lexer из файлов MySQL.g4 по адресу https://github.com/antlr/grammars-v4/tree/master/mysql. Я получаю сообщение об ошибке "правила парсера", которые не разрешены в lexer ", как показано на прилагаемом изображении.
Только грамматики Lexer могут содержать только лексерские правила. Я думаю, что здесь происходит то, что инструмент, который вы используете, интерпретирует channels
"правила" в качестве правила парсера, потому что он начинается не с прописной буквы и поэтому неуместен в этой грамматике только для лексера.
Однако комментарий Майка правильный. Эта структура channels
(в настоящее время) является допустимой грамматикой ANTLR для файла lexer. См. Эту страницу. , Предполагается, что он входит в файл грамматики lexer, поэтому единственное, что я могу догадаться об ошибке, которую вы получаете, это то, что используемый вами инструмент (IDE) не понимает синтаксис спецификаций channels
.
Имейте в виду, что не всякая грамматика в этом списке github является совершенной и не является частью ANTLR, но внесены различными авторами, а иногда и разными версиями ANTLR, чем тот, который вы используете в любой момент.
channels
- это не правило, а список каналов, поддерживаемый грамматикой и действительный только в грамматике лексера.