Parsertyp benennen



  • Hallöchen,
    ich brauche einmal euren weisen Ratschlag. Ein Parser für mathematische Ausdrücke also, der weitestgehend "Symbol+Operator"-Paare liest und nebenher einen AST mit offenem Blatt führt, wo entweder das Symbol eingefügt wird und dann ander rechten Kante des Baums der Operator entsprechend der Priorität dazwischengehauen oder der Operator mit dem Symbol am offenen Blatt eingefügt wird, wie nennt man einen solchen? Also der Gedanke ist, das Wort von links nacht rechts durchzuparsen und den Baum laufend entsprechend der Prioriäten umzuhängen bzw. zu ergänzen.
    Ich habe einige Typen auf Wikipedia finden können, aber meine Semantikkenntnisse langten leider nicht, um das zweifelsfrei zuordnen zu können.

    Danke und entschuldigung für die dämliche Frage 😞



  • Das ist sehr schwammig beschrieben, klingt aber nach shift-reduce. Da werden teilbaeume aufgebaut, auf einem Stack gespeichert und vereinigt, wenn eine Bildungsvorschrift passt.



  • Hrmmm, nee, also bis auf echte Teilausdrücke (also welche, die von expliziten Klammern eingeschlossen werden), rekursiere ich nicht (oder nutze äquivalent einen Stack). Ich habe nur einen Baum, den ich iterativ erweitere, der Zeitweise beim Parsen aber durchaus "falsch" sein kann, also nicht als Teilbaum im Endergebnis enthalten ist, bis ihn ein späterer Schritt richtig "umhängt". Aber was auf jeden Fall immer gilt ist, dass ein offenes Blatt am "rechten" Rand des Baums zu finden ist.

    Irgendwie scheint mir das eine Art von einem Prädiktiven Parser zu sein, den ich hier so gebastelt habe. Ich bin auch nicht formal von irgendeiner Grammatik ausgegangen, weil ich es mir schwer vorstellte mit meinem Vorwissen daraus einen Parser generieren zu lassen, der auch Operator-Präzedenzen/Assoziativität behandelt. Habe eben das erste Mal in Operator-Präzedenz-Grammatiken reingeschaut... Und das funktioniert dort so gar nicht wie bei mir, außer natürlich, dass ich auch solche Präzedenz-Funktionene verwende (ist ja kein Geniestreich...).



  • Wie arbeitet der Parser exakt? Dabei ist der AST Generierung nicht von Bedeutung!


Anmelden zum Antworten