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