Bonjour à tous

Je regarde comment fonctionne ANTLR, et je suis bloqué sur le problème suivant

je souhaite parser quelque chose qui reseemble à ceci

Instruction Idenfieur
Instruction $HexaDecimalvalue

j'ai donc créer mes règles comme ceci (c'est un résumé):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
line: 
        instruction 
        (
              Identifier
           | '$' numericvalue
        );
 
numericvalue:
      HexaNumber
   ;   
 
HexaNumber : ('-' | '+')? ( '0'..'9' | 'a'..'f' | 'A'..'F')+ ;
 
Identifier : ('_' | Letter) ('_' | Letter | Figure)* ;
Mon parseur fonctionne bien sauf dans un cas précis;: Quand ma valeur hexadécimal commence par A,b,c,d,e,f.

j'ai compris pourquoi, mais je ne sais pas comment le résoudre

Quand ma valeur hexadecimal commence par une lettre, mon lexer traduit le texte en identifier. et du coup je ne match plus avec ma grammaire.

Par exemple, FAFA est aussi un un nombre hexadécimal qu'une chaine de caractère

Comment puis je résoudre ce conflit

merci