Ich erstelle einen Infix-Ausdrucksparser, also muss ich einen Tokenizer erstellen. Es funktioniert gut, bis auf eine Sache: Ich weiß jetzt nicht, wie man negative Zahlen vom "-" Operator unterscheidet.Wie man den '-' Operator von einer negativen Nummer für einen Tokenizer unterscheidet
Zum Beispiel, wenn ich habe:
23/-23
Die Token 23
sein sollte, /
und -23
, aber wenn ich einen Ausdruck haben wie
23-22
Dann sollten die Tokens 23
sein, -
und 22
.
Ich fand eine dreckige Umgehungslösung, die ist, wenn ich ein "-" gefolgt von einer Zahl, sehe ich das vorherige Zeichen und wenn dieses Zeichen eine Ziffer oder ein ') ist, behandle ich das "-" als Betreiber und keine Nummer. Abgesehen Art von hässlich aus ist, es funktioniert nicht für Ausdrücke wie
--56
, wo es die folgenden Token bekommt: -
und -56
wo es --56
Jeder Vorschlag bekommen sollte?
Nun, die C-Grammatik hat keine negativen Integer-Konstanten, es ist alles unäre Minus. Scheint so, als wäre das der einfachere Ansatz. –
Das wäre normalerweise nicht die Aufgabe eines Tokenizers, Sie müssen das auf der Syntaxebene herausfinden. – nos