Ich lehre mich, JavaCC in einem Hobby-Projekt zu verwenden, und habe eine einfache Grammatik, um einen Parser zu schreiben. Ein Teil des Parsers beinhaltet folgende Leistungen:Erklärung und Lösung für die JavaCC-Warnung "Regulärer Ausdruck: FOO kann niemals als: BAR" gefunden werden?
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 : "-" > }
Wenn mit JavaCC Kompilieren erhalte ich die Ausgabe:
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
Ich bin sicher, dass dies ein einfaches Konzept, aber ich verstehe nicht, die Warnung zu sein ein Anfänger in Parser-Generierung und regulären Ausdrücken.
Was bedeutet diese Warnung (in As-Novice-as-you-can-bekommen Bedingungen)?
Ich bin mir nicht sicher, ich habe Float geändert, so dass es nicht Integer - {))? "." | ()? "." | ()? "." >}, und immer noch die Warnung erhalten. Ich bin davon überrascht, denn was du gesagt hast, schien vollkommen logisch zu sein :) –
Grundlefleck
Hmm ... Ich denke immer noch, dass es mehrdeutig ist, aber ehrlich gesagt, da ich JavaCC nicht ausprobiert habe, bin ich hier nicht wirklich nützlich ... Ich werde aufschieben und hoffe, dass jemand, der es weiß, antworten wird. – Uri