Подбор строчных букв с ANTLR - PullRequest
2 голосов
/ 23 ноября 2011

Я использую ANTLRWorks для простой грамматики:

grammar boolean;

// [...]
lowercase_string
        :   ('a'..'z')+ ;

Однако lowercase_string не соответствует foobar в соответствии с интерпретатором (MismatchedSetException(10!={}). Идеи?

1 Ответ

5 голосов
/ 23 ноября 2011

Вы не можете использовать оператор .. в правилах синтаксического анализа.Чтобы соответствовать диапазону от 'a' до 'z', создайте для него правило лексера (правила лексера начинаются с заглавной буквы).

Попробуйте так:

lowercase_string
  :  Lower+ 
  ;

Lower
  :  'a'..'z'
  ;

или:

lowercase_string
  :  Lower
  ;

Lower
  :  'a'..'z'+
  ;

См. Также предыдущие вопросы и ответы: Практическое различие между правилами синтаксического анализатора и правилами лексера в ANTLR?

...