Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Antlr 语义谓词从Antr3到Antr4的翻译_Antlr_Antlr4 - Fatal编程技术网

Antlr 语义谓词从Antr3到Antr4的翻译

Antlr 语义谓词从Antr3到Antr4的翻译,antlr,antlr4,Antlr,Antlr4,在我的Antlr3语法中,我使用以下lexer规则来识别固定的日期周期,例如“1年4个月”: (来自巴特·基尔斯的,应该得到的信贷) 不幸的是,这种语法在ANTLR4中已经消失了。因此,我尝试了以下方法,但没有成功: DATE_PERIOD_CONSTANT : (INTEGER ' '+ (YEAR | MONTH | WEEK | DAY))+ | {getText().matches("(\\d+ (YEAR(S)?|MONTH(S)?|WEEK(S)?|DAY(S)?))+")}? IN

在我的Antlr3语法中,我使用以下lexer规则来识别固定的日期周期,例如“1年4个月”:

(来自巴特·基尔斯的,应该得到的信贷)

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

有人能帮我翻译成新格式吗


Jason

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

DATE_PERIOD_CONSTANT (' '+ DATE_PERIOD_CONSTANT)*
DATE_PERIOD_CONSTANT (' '+ DATE_PERIOD_CONSTANT)*