Arithmetischer Ausdruck Grammatik und Parser

8

Kürzlich habe ich nach einer angemessenen Grammatik für arithmetische Ausdrücke gesucht, aber nur triviale gefunden, zB pow(..., ...) ignoriert. Dann habe ich es selbst versucht, aber manchmal hat es nicht so funktioniert, wie man es erwartet. Zum Beispiel habe ich es versäumt, ein unäres - vor Ausdrücken zuzulassen und es zu beheben. Vielleicht kann jemand meinen derzeitigen Ansatz betrachten und ihn verbessern. Außerdem denke ich, dass andere davon profitieren können, weil es eine häufige Aufgabe ist, arithmetische Ausdrücke analysieren zu können.

%Vor%

So kann man folgendes auswerten:

%Vor%

Irgendwelche Verbesserungsvorschläge? Benutze ich die richtige Grammatik oder ist es nur eine Frage der Zeit, bis ein Benutzer einen (im Hinblick auf meine bereitgestellten Funktionen) gültigen arithmetischen Ausdruck eingibt, der nicht geparst werden kann?
(Worum geht es Betreiber Vorrang?)

    
Peter Schmitz 27.04.2011, 14:11
quelle

2 Antworten

2

Für eine bessere Leistung empfehle ich, private lazy val anstelle von private def zu verwenden, wenn Parser definiert werden. Andernfalls, wenn ein Parser Referenzen enthält, wird er erneut erstellt.

Netter Code BTW.

    
Stefan Endrullis 27.04.2011 14:49
quelle
1

Nun vielleicht Variablen in der Schleife hinzufügen:

%Vor%

Jetzt müssen Sie also eine Karte übergeben, die Sie bewerten können, und Sie können Folgendes tun:

%Vor%

Wie Sie sehen können, habe ich auch Parameter hinzugefügt, um unäre und binäre Funktionen hinzuzufügen.

Danke für diesen guten Code übrigens!

    
Didier Villevalois 05.12.2014 18:14
quelle

Tags und Links