什麼是最簡單(最短,最少規則,沒有警告)的方式來解析同一語法中的有效日期和數字?我的問題是,匹配有效月份(1-12)的詞法分析規則將匹配任何1-12的匹配項。所以,如果我只是想匹配一個數字,我需要一個像解析規則:Antlr:最簡單的方法來識別日期和數字?
number: (MONTH|INT);
它只有當我添加詞法規則一天和一年變得更加複雜。我想這樣的日期解析規則:
date: month '/' day ('/' year)? -> ^('DATE' year month day);
我不在乎月,日&年是解析或詞法規則,只是只要我結束了同一個樹形結構。我還需要能夠在其他地方認識數字,例如:
foo: STRING OP number -> ^(OP STRING number);
STRING: ('a'..'z')+;
OP: ('<'|'>');