В моей грамматике Antlr3 я использовал следующее правило лексера для распознавания постоянного периода даты, такого как «1 ГОД 4 МЕСЯЦА»:
(DATE_PERIOD_CONSTANT)=> DATE_PERIOD_CONSTANT ((' '+ DATE_PERIOD_CONSTANT)=> ' '+ DATE_PERIOD_CONSTANT)*
(Спасибо, где должно быть, от Барта Кирса).
К сожалению, этот синтаксис исчез в ANTLR4. Итак, я безуспешно пробовал следующее:
DATE_PERIOD_CONSTANT
: (INTEGER ' '+ (YEAR | MONTH | WEEK | DAY))+
| {getText().matches("(\\d+ (YEAR(S)?|MONTH(S)?|WEEK(S)?|DAY(S)?))+")}? INTEGER
;
INTEGER
: DIGIT+
;
fragment DIGIT:'0'..'9';
// YEAR/MONTH/WEEK/DAY definition
Это тоже было безуспешно.
Может ли кто-нибудь помочь мне перевести в новый формат?
Джейсон