designfrage interpreter



  • hallo

    ich schreibe einen interpreter der aus einem term in string form einen baum erstellt.
    mein ziel ist es, dass bei einem term wie "(5+4)*2" ein baum entsteht, bei dem zuoberst die multiplikation ist, von denen ein blatt 2 ist und ein ast die addition (die wieder 2 blätter hat). die klassen für den baum und die äster etc habe ich bereits implementiert. nun würde ich gern eine funktion implementieren, die den term in einen baum umwandelt. das wäre ansich nicht so schwierig aber damit das projekt modular ist, würde ich gerne mit rules arbeiten, so dass der anwender eigene operatoren etc nutzen kann.

    die frage:
    wie soll die diese rules definieren? ich dachte zunächst an einen vektor mit instanzen von klassen, bei denen die reihenfolge innerhalb des vektors beachtet wird. hier ist mir aber auch nicht so klar wie ich das in den einzelnen rules gespeichert sind. denn so unterscheidet sich ein + oder ein * in der implementierung von einem () oder einem ||

    gruss



  • Vielleicht hilft dir das weiter: http://www.c-plusplus.net/forum/268247



  • Evtl. Auch mal Boost.Spirit ansehen, die haben das relativ intuitiv gemacht.



  • Flex + bison bietet bereits ein Matheparser/Evaluierer als Tutorial an.


Anmelden zum Antworten