Logik-expression parser

Ich versuche zu schaffen, ein Logik-Ausdruck parser für Ausdrücke wie:
((VariableA -> VariableB) UND NICHT VariableC)
Der parser soll in der Lage sein, um zurückzukehren, ob das Ergebnis true oder false für gegebene Werte der Variablen.

Grundsätzlich die Ausdrücke werden nur Variablen enthalten, die logischen Operatoren (oder, und, Implikation, äquivalenz, negation und Klammern).

Ich würde gerne Fragen, was ist der beste Weg zur Umsetzung dieser Art von parser (mit AST -, Baum -, oder Umgekehrte polnische Notation)? Oder vielleicht gibt es bereits einige open-source-Parser, die den job tun können?

  • Implementieren Sie einen recursive-descent-parser. Logik-Ausdrücke sind sehr einfach und leicht analysiert diese Weise. Die parsing-Aktionen auswerten können, die Variablen, push/pop Zwischenwerte aus einem Stapel. Dies sollte ~~ 50 Zeilen C-code.
InformationsquelleAutor Adam | 2009-05-05
Schreibe einen Kommentar