什么是最简单(最短,最少规则,没有警告)的方式来解析同一语法中的有效日期和数字?我的问题是,匹配有效月份(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: ('<'|'>');