Je m'apprends à utiliser JavaCC dans un projet de loisir, et j'ai une grammaire simple pour écrire un analyseur. Une partie de l'analyseur comprend les éléments suivants:Explication et solution pour l'avertissement de JavaCC "Choix d'expression rationnelle: FOO ne peut jamais être apparié comme: BAR"?
TOKEN : { < DIGIT : (["0"-"9"]) > }
TOKEN : { < INTEGER : (<DIGIT>)+ > }
TOKEN : { < INTEGER_PAIR : (<INTEGER>){2} > }
TOKEN : { < FLOAT : (<NEGATE>)? <INTEGER> | (<NEGATE>)? <INTEGER> "." <INTEGER> | (<NEGATE>)? <INTEGER> "." | (<NEGATE>)? "." <INTEGER> > }
TOKEN : { < FLOAT_PAIR : (<FLOAT>){2} > }
TOKEN : { < NUMBER_PAIR : <FLOAT_PAIR> | <INTEGER_PAIR> > }
TOKEN : { < NEGATE : "-" > }
Lors de la compilation avec JavaCC je reçois la sortie:
Warning: Regular Expression choice : FLOAT_PAIR can never be matched as : NUMBER_PAIR
Warning: Regular Expression choice : INTEGER_PAIR can never be matched as : NUMBER_PAIR
Je suis sûr que c'est un concept simple mais je ne comprends pas l'avertissement, être un novice dans la génération de l'analyseur et dans les expressions régulières.
Que signifie cet avertissement (dans les termes as-novice-as-you-get-get)?
Je ne suis pas sûr de cela, j'ai changé Float afin qu'il ne puisse pas correspondre Integer - {)? "." | ()? "." | ()? "." >}, et a quand même reçu l'avertissement. Je suis surpris par ça, parce que ce que tu as dit me semblait parfaitement logique :) –
Grundlefleck
Hmm ... Je pense toujours que c'est lié à l'ambiguïté mais honnêtement, puisque je n'ai pas essayé JavaCC je ne suis d'aucune utilité pour toi ici ... Je vais différer et j'espère que quelqu'un qui le sait répondra. – Uri