¿Cuál es la forma más sencilla (más corta, menos reglas y sin advertencias) de analizar ambas fechas y números válidos en la misma gramática? Mi problema es que una regla lexer para coincidir con un mes válido (1-12) coincidirá con cualquier ocurrencia de 1-12. Así que si sólo quiero que coincida con un número, necesito una regla de análisis como:Antlr: ¿La forma más simple de reconocer fechas y números?
number: (MONTH|INT);
Sólo se pone más complejo cuando agrego reglas analizadoras para el día y el año. Quiero una regla de análisis para la fecha de la siguiente manera:
date: month '/' day ('/' year)? -> ^('DATE' year month day);
No me importa si el mes, el día & años son las reglas de análisis sintáctico o analizadoras, con tal de que termino con la misma estructura de árbol. También tengo que ser capaz de reconocer los números en otros lugares, por ejemplo .:
foo: STRING OP number -> ^(OP STRING number);
STRING: ('a'..'z')+;
OP: ('<'|'>');