Frage zur polnischen Notation bezügl. Schreibweise

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Frage zur polnischen Notation bezügl. Schreibweise

Beitrag von gekkonier »

Ausdrücke wie

Code: Alles auswählen

( 1 + 2 ) * ( 4 - 1 )
sehen in polnischer Notation so aus:

Code: Alles auswählen

* + 1 2 - 4 1
Nach umgekehrter polnischer Notation würde es so aussehen:

Code: Alles auswählen

1 2 + 4 1 - *
Nehmen wir mal an, dass ich bei einer Addition mehrere Summanden verwenden will:

Code: Alles auswählen

+ 1 + 2 3
wäre dann äquivalent zu

Code: Alles auswählen

1 + 2 + 3
, nicht? Kann ich da nicht einfach folgendes schreiben?

Code: Alles auswählen

+ 1 2 3
Um veranschaulicher zu machen was ich eigentlich wissen will:
Kann ich folgende Infixnotation

Code: Alles auswählen

( 1 + 2 + 3 ) * ( 4 - 1 )
in folgende polnische Notation umbauen, ohne Unklarheiten in die Notation zu bringen?

Code: Alles auswählen

* + 1 2 3 - 4 1
Gibt es hier vielleicht Stolperfallen, die es zu beachten gäbe?
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Ich kenn mich nicht allzu gut aus, aber ich glaube, das hängt davon ab, wie viele Operanden ein bestimmter Operator sehen will. Ein + verlangt zwei Werte, daher ist es gut möglich, daß es mit drei Werten nicht funktioniert.

Ist aber nur mal ein erster Denkansatz, vielleicht klingelt bei Dir ja irgendwie was, oder Du weißt evtl. wo Du nochmal nachlesen kannst. Ansonsten kann's natürlich auch gut sein, daß das, was ich sage, Unfug ist ;)


EDIT: Wenn man es nämlich mit Funktionsaufrufen nachbauen würde, wäre schnell klar, daß es an der Anzahl der Operanden / Parameter liegt:

Code: Alles auswählen

* + 1 2 - 4 1

mul(add(1, 2), sub(4, 1))
Das wäre hier dann folgendermaßen:

Code: Alles auswählen

* + 1 2 3 - 4 1

mul(add(1, 2), [b]3?![/b]
Dennoch bin ich mir nicht 100% sicher...
Zuletzt geändert von ZeHa am 03.08.2007 16:23, insgesamt 1-mal geändert.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Beitrag von gekkonier »

WoNáDo auf http://forum.ruby-portal.de/viewtopic.php?t=5031 hat mich netterweise darauf gebracht:
WoNáDo hat geschrieben:Nimm doch mal (1+2+3)-4 und (1+2)-3-4, die nach Deiner Einsparmethode beide die Darstellung -+1234 hätten.
Offensichtlich bin ich zu kaputt, um eine simple Schlussfolgerung zu ziehen :lol:

Der Thread dort ist schon relativ interessant :lol:
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Wo wird diese "polnische Notation" (der Begriff kommt mir bekannt vor, aber ich häte ihn jetzt spontan aus dem Bauch raus eher mit Schach asoziert) eigentlich verwendet, und welche Vorteile bietet sie?
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Beitrag von gekkonier »

Sobald du in der Shell einen Befehl mit Parametern verwendest, verwendest du ohne es zu wissen polnische Notation.

Beispiele:

dir *.bat
ls a*
cp quellfile zielfile
..
..

Desweiteren ist Lisp-Syntax prinzipiell so aufgebaut, und manchmal wird auch in Interpretern und Compilern aus Infix Postfixnotation in einem Zwischenschritt gemacht, weil es sich damit leichter weiter arbeiten lässt.

Kuck dir das mal an: http://de.wikipedia.org/wiki/Stapelspeicher

Mittels eines Stacks und der Postfixnotation lässt sich relativ einfach ein Taschenrechner basteln ;)

Assembler ist z.B auch Postfix Notation
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

HU... zu dem schell-problem gibts ettliche häßlich witze...
(z.b. witze über lisp... sind die besten)
...aber die UPN... das is , wie mans in die rechenmaschine eingibt,
und das is eigentlich immer aktuell....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten