Сбой синтаксического анализа antlr в сгенерированном синтаксическом предикате - PullRequest
0 голосов
/ 18 июля 2011

У меня есть грамматика с backtrack=true, похожая на следующую:

 start:
     subrules+;


 subrules:
      ...
      | rule1
      ...


 rule1:
 ....
 | { Type1 }? 
   (sentence INT amount NEW_LINE (sentence NEW_LINE)? )
 .....

a valid sentence 1 12.09 \n on two lines проходит, но A valid sentence \n без второй строки завершается неудачей.

Проходя по коду во время отладки, я вижу, что он не соответствует разделу кода, сгенерированному для (desc2=sentence NEW_LINE)?

Если я закомментирую соответствующие строки в сгенерированном коде, чтобы он неt пытаться сопоставить (desc2=sentence NEW_LINE)? перед входом в правило, оба предложения проходят правильно.Является ли это ожидаемым поведением или, скорее всего, что-то еще в моей грамматике (которая в настоящее время довольно сложная) вызывает неправильное поведение.

Спасибо, Ричард

...