Jaka jest najprostsza (najkrótsza, najmniejsza liczba reguł i brak ostrzeżeń) sposób na przeanalizowanie obu ważnych dat i liczb w tej samej gramatyce? Mój problem polega na tym, że reguła lexera pasująca do poprawnego miesiąca (1-12) będzie pasować do każdego wystąpienia 1-12. Więc jeśli po prostu chcesz dopasować liczbę, muszę regułę parsującej jak:Antlr: Najprostszy sposób rozpoznawania dat i liczb?
number: (MONTH|INT);
To tylko staje się bardziej skomplikowana, gdy dodam zasady Lexer za dnia i roku. Chcę regułę przetwarza na bieżąco tak:
date: month '/' day ('/' year)? -> ^('DATE' year month day);
I nie obchodzi mnie, czy miesiąc, dzień & lat są zasady analizowanie składni i Lexer, tylko tak długo, jak skończyć z tej samej strukturze drzewa. Ja również muszą być w stanie rozpoznać numery gdzie indziej, np .:
foo: STRING OP number -> ^(OP STRING number);
STRING: ('a'..'z')+;
OP: ('<'|'>');