Я использую ANTLRWorks для простой грамматики:
grammar boolean; // [...] lowercase_string : ('a'..'z')+ ;
Однако lowercase_string не соответствует foobar в соответствии с интерпретатором (MismatchedSetException(10!={}). Идеи?
lowercase_string
foobar
MismatchedSetException(10!={})
Вы не можете использовать оператор .. в правилах синтаксического анализа.Чтобы соответствовать диапазону от 'a' до 'z', создайте для него правило лексера (правила лексера начинаются с заглавной буквы).
..
'a'
'z'
Попробуйте так:
lowercase_string : Lower+ ; Lower : 'a'..'z' ;
или:
lowercase_string : Lower ; Lower : 'a'..'z'+ ;
См. Также предыдущие вопросы и ответы: Практическое различие между правилами синтаксического анализатора и правилами лексера в ANTLR?