Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » infix, präfix zu postfix bei OOP-Syntax » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen infix, präfix zu postfix bei OOP-Syntax
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Hobbie
unregistriert
infix, präfix zu postfix bei OOP-Syntax Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:

Ausdrücke mit infix-Operatoren usw. sollen in die postfix-Form
umgewandelt werden.

Z.B. wird "sin(a+2*b)" zu "a 2 b * + sin".

Man kann dafür z.B. den shunting-yard-Algorithmus verwenden.
Dabei tritt jedoch bei OOP-Syntax ein Problem auf. Der Ausdruck
"a.p(x)"
wird zu
"x a . p".
Der Ausdruck
"(a+4)->p(x)"
wird zu
"x a 4 + -> p".

Normalerweise wird der Funktions-Bezeichner auf den Operator-Stapel
gepackt. In diesem Fall müsste jedoch ein ganzer Ausdruck auf den
Operator-Stapel gepackt werden.

Meine Frage ist jetzt wie ich den shunting-yard-Algorithmus
dahingehend modifizieren kann. Es ist natürlich auch wünschenswert,
dass man keine großen Laufzeiteinbußen hinnehmen muss, wenn
der besagte Fall garnicht eintritt.



Meine Ideen:

Ich habe mir überlegt einen zweiten Stapel stack2 zu verwenden. Das was der Algorithmus ausspuckt wird nicht zur Ausgabe hinzugefügt sondern zu stack2.top. Erst am Ende wird stack2.top zur Ausgabe hinzugefügt. Gehört zum Ausdruck jedoch ein Prozedur-Aufruf so wird stack2.top auf den Operatorstack gepackt. Offenbar muss bei verschachtelten Ausdrücken der Stackpointer von stack2 incrementiert werden. So die Idee.

Vielleicht sollte ich eine andere Art von Parser verwenden. Ich weiß nicht.

Wenn ich einen Syntax-Baum mache, dann könnte ich eventuell einfach zwei Knoten vertauschen und fertig. Aber das ist bäh wegen Allokations-Aufwand Baum vs. Stapel von Referenzen.
09.07.2013 10:26
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » infix, präfix zu postfix bei OOP-Syntax