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.
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?)
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.
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!
Tags und Links scala parser-combinators