1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
526
526
EMPFEHLEN
-
04.03.10 15:59 #1
- Registriert seit
- Oct 2005
- Beiträge
- 32
Hallo,
ich habe einen Lex/Yacc Parser der verschiedene Regeln auswertet und danach irgendwelche Aktionen ausführt.
Eine solche Aktion ist z.B. "setze den Kaufpreis auf Wert X", wobei X ein nicht-negativer Float ist.:
also kaufpreis=v;Code :1
| KAUF_PREIS EQUALS DOUBLE:v {: this.getDing().setPreis( v); :}
Jetzt würde ich gerne noch eine Aktion erstellen, die den Preis auch auf einen negativen Wert setzen kann.
Mein Ansatz wäre dieser:
also kaufpreis=-v;Code :1
| KAUF_PREIS EQUALS MINUS DOUBLE:v {: this.getDing().setPreis(-v); :}
Die Frage ist: Geht das auch anders?
Oder muss ich das Vorzeichen explizit als eigenes Zeichen mitschleppen?
Von der Logik her bin ich mit mir selbst nicht einig, wer da jetzt das Zeichen erkennen muss.
Falls ich hier den Wald vor lauter Bäumen nicht seh - Bitte um Aufklärung.
Vielen Dank
Vroni
-
Normalerweise definiert man das DOUBLE-Token als Fließkommazahl mit optionalem Vorzeichen, dann braucht man es nicht in jedem Pattern extra anzugeben. Wenn du eine Unterscheidung zwischen vorzeichenlosen und vorzeichenbehafteten Fließkommazahlen brauchst, definierst du jeweils ein entsprechendes Pattern dafür. Man kann sich das vereinfachen, indem man in der Definition des vorzeichenbehafteten Patterns auf das vorzeichenlose Pattern verweist.
Anders sieht es aus, wenn du Rechenausdrücke zulassen willst. In dem Fall werden die Zahlen-Tokens ohne Vorzeichen definiert. Das Minus-Zeichen ist dann beim yacc sowohl als unärer Operator (zur Darstellung negativer Zahlen) als auch als binärer Operator (als Rechenzeichen für die Subtraktion) zu definieren. Welche Definition im jeweiligen Kontext anzuwenden ist, entscheidet der Parser dann anhand des Kontextes, also des Syntaxbaumes, der aus der Grammatik erstellt wird. Am besten liest du dir mal diesen Leitfaden zu lex und yacc durch, in dem auch ein Beispielprojekt realisiert wird.Geändert von Vereth (07.03.10 um 02:12 Uhr)
Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons
Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.
-
24.06.10 17:32 #3
- Registriert seit
- Oct 2005
- Beiträge
- 32
Hallo genau das will ich. Ehrlich gesagt hab ich das nicht so genau in dem PDF gefunden. Wahrscheinlich steh ich auf dem Schlauch.
Diese zwei verwende ich für die Zahlen:
[0-9]+ { return new Symbol(sym.NUMBER, new Integer(yytext())); }
[0-9][0-9.]+ { return new Symbol(sym.DOUBLE, new Double(yytext())); }
Wie kriegt ich jetzt das Minus da vorne dran?
Ähnliche Themen
-
Zahlen einlesen - überwiegen positive oder negative Zahlen?
Von jenny1106 im Forum C/C++Antworten: 10Letzter Beitrag: 06.03.10, 20:51 -
VBA Code / negative Zahlen rot!
Von fonds im Forum Office-AnwendungenAntworten: 0Letzter Beitrag: 03.09.08, 14:35 -
auf negative Zahlen prüfen
Von aTa im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 23.10.06, 15:50 -
Exceltabelle negative Zahlen
Von M155P3RF3K7 im Forum Office-AnwendungenAntworten: 0Letzter Beitrag: 17.05.06, 07:59 -
negative Zahlen
Von bizza im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 23.02.05, 17:23





Zitieren
Login




