J'écris une grammaire pour un langage de taille moyenne, et j'essaie d'implémenter des littéraux de temps de la forme hh:mm:ss
.ANTLR: Numérotation à 2 chiffres lorsque d'autres littéraux numériques sont également possibles
Cependant, chaque fois que j'essaie d'analyser, par exemple, 12:34:56
en tant que timeLiteral
, j'obtiens des exceptions de jeton non concordantes sur les chiffres. Est-ce que quelqu'un sait ce que je peux faire mal?
Voici les règles pertinentes actuellement définies:
timeLiteral
: timePair COLON timePair COLON timePair -> ^(TIMELIT timePair*)
;
timePair
: DecimalDigit DecimalDigit
;
NumericLiteral
: DecimalLiteral
;
fragment DecimalLiteral
: DecimalDigit+ ('.' DecimalDigit+)?
;
fragment DecimalDigit
: ('0'..'9')
;