2013-03-14 70 views
0

翻譯在我Antlr3語法,我用下面的詞法規則識別器固定日期時間段,如「1年4個月」:語義謂從Antr3到Antr4

(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 

這也是不成功的。

任何人都可以幫我翻譯成新格式嗎?

傑森

回答

2

的例子詞法規則使用語法謂詞,而不是語義斷言。這些在ANTLR 4中是不必要的,因爲它的預見能力大大提高了。所有你需要做的就是刪除它們:

DATE_PERIOD_CONSTANT (' '+ DATE_PERIOD_CONSTANT)* 
+0

DOH!接受答案。 – Jason 2013-03-14 19:12:37