Kellerautomat mit vereinfachten Rechenausdrücken



  • Servus zusammen,

    ich versuche gerade einen Kellerautomaten zu entwickeln, welcher vereinfachte Rechenausdrücke folgender Form erkennen kann:

    z+z
    z*(z+z)
    z+z*(z+z)
    ((z+z)+z)*(z+z)
    ...
    

    Als Grammatik hab ich mal folgende aufgestellt:

    A für Ausdruk meinetwegen
    A --> A+z | A*z | (A) | z
    

    Ich versuche das schon den ganzen Tag lang und schaffe es "ums Verrecken" nicht, so einen Automaten mit den korrekten Übergängen auf Papier zu zeichnen.
    So ein Zustandsübergang sieht ca. so aus:

    gelesenens Zeichen, Zeichen, dass gepopt werden soll --> was gepusht werden soll
    

    Als Bedingung, dass der Ausdruck passt, soll der Stack/Keller/... halt am Ende leer sein.
    Ich habe das für beliebige Klammerausdrücke wie

    (())
    (()())
    ((()())())
    ...
    

    Schon geschafft, aber das hier raff ich einfach net.

    Falls sich einer von euch zufällig da ein bisschen auskennt, wäre ich sehr dankbar für etwas Hilfe^^


Anmelden zum Antworten