0

在我的 Antlr3 语法中,我使用以下词法分析器规则来识别恒定的日期周期,例如“1 YEAR 4 MONTHS”:

(DATE_PERIOD_CONSTANT)=> DATE_PERIOD_CONSTANT ((' '+ DATE_PERIOD_CONSTANT)=> ' '+ DATE_PERIOD_CONSTANT)*

(信用到期的信用,来自Bart Kiers)。

不幸的是,这种语法在 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

那也是不成功的。

谁能帮我翻译成新格式?

杰森

4

1 回答 1

2

示例词法分析器规则使用句法谓词,而不是语义谓词。这些在 ANTLR 4 中是不必要的,因为它大大提高了前瞻能力。您所要做的就是删除它们:

DATE_PERIOD_CONSTANT (' '+ DATE_PERIOD_CONSTANT)*
于 2013-03-14T18:47:51.307 回答