2014-01-27 3 views
1

У меня есть грамматика, которая терпит неудачу при первом токене. Я раздел вниз некоторые, чтобы уменьшить выбор, но все еще есть ошибка:Грамматика antlr4 не соответствует исходному идентификатору

линия 1: 0 несовпадающего вход «главный» ожидая { «@», «Защиты», IDENTIFIER}

Я ожидаю токен «main» для соответствия IDENTIFIER, который имеет это лексическое производство:

IDENTIFIER: [a-zA-Z] [a-zA-Z0-9] *;

Зачем это происходит?

ответ

1

Один из следующих происходит:

  1. У вас есть еще одно правило в грамматике, расположенной перед тем IDENTIFIER, что также соответствует вход main.
  2. Совокупной грамматика (объявлено как grammar T вместо parser grammar T или lexer grammar T), где один из правил синтаксических анализа содержит буквальный 'main', который вызывает отдельное правило лексера быть неявно создано для этого буквального.
+0

Ах, я думаю, что ваш # 1, вероятно, это. –

Смежные вопросы