<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Shunting-yard-Algorithmus</id>
	<title>Shunting-yard-Algorithmus - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Shunting-yard-Algorithmus"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Shunting-yard-Algorithmus&amp;action=history"/>
	<updated>2026-06-01T13:56:16Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Shunting-yard-Algorithmus&amp;diff=2028392&amp;oldid=prev</id>
		<title>imported&gt;SweetWood: Bildlegende ohne Schlusspunkt; Wikicode optimiert; Wikilinks eingefügt; Klarstellungen; Rechtschreibung; Vereinheitlichungen; Formelsatz optimiert</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Shunting-yard-Algorithmus&amp;diff=2028392&amp;oldid=prev"/>
		<updated>2024-08-28T08:52:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/index.php/Hilfe:Bilder#Bildlegende&quot; title=&quot;Hilfe:Bilder&quot;&gt;Bildlegende ohne Schlusspunkt&lt;/a&gt;; &lt;a href=&quot;/index.php/Wikicode&quot; class=&quot;mw-redirect&quot; title=&quot;Wikicode&quot;&gt;Wikicode&lt;/a&gt; optimiert; &lt;a href=&quot;/index.php/Wikilink&quot; class=&quot;mw-redirect&quot; title=&quot;Wikilink&quot;&gt;Wikilinks&lt;/a&gt; eingefügt; Klarstellungen; Rechtschreibung; Vereinheitlichungen; &lt;a href=&quot;/index.php/Formelsatz&quot; title=&quot;Formelsatz&quot;&gt;Formelsatz&lt;/a&gt; optimiert&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Datei:Shunting yard.svg|400px|mini|Grafische Illustration des Algorithmus als 3-Weg-Weichenstellung]]&lt;br /&gt;
Der &amp;#039;&amp;#039;&amp;#039;Shunting-yard-Algorithmus&amp;#039;&amp;#039;&amp;#039; ([[Deutsche Sprache|deutsch]]: Rangierbahnhof-Algorithmus) ist eine Methode, um mathematische [[Term]]e von der [[Infixnotation]] in die [[umgekehrte polnische Notation]] oder in einen [[Abstrakter Syntaxbaum|abstrakten Syntaxbaum]] zu überführen. Der [[Algorithmus]] wurde von [[Edsger W. Dijkstra]] erfunden und mit {{enS|shunting yard|de=Rangierbahnhof}} benannt, weil er in seiner Arbeitsweise an einen [[Rangierbahnhof]] erinnert.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
Der Shunting-yard-Algorithmus benötigt für die Konversion sowohl eine [[Eingabe und Ausgabe|Input-]] als auch eine Output[[Warteschlange (Datenstruktur)|queue]] sowie einen [[Stapelspeicher|Stack]], der für das Zwischenspeichern der [[Operator (Mathematik)|Operator]]en benötigt wird. Der Input[[Zeichenkette|string]] wird zeichenweise gelesen, wobei alle [[Zahl]]en direkt und in derselben Reihenfolge in die Ausgabevariable geschrieben werden. Falls das anstehende Zeichen ein Operationszeichen ist, wird es auf den Operatorenstack gelegt. Falls bereits ein Operator auf dem Stack liegt, wird anhand der [[Operatorrangfolge]] und der [[Operatorassoziativität]] entschieden, ob der neue Operator direkt auf den Stack gelegt wird oder ob der Stack zuerst in den Output geleert wird.&lt;br /&gt;
&lt;br /&gt;
Öffnende [[Klammer (Zeichen)|Klammern]] werden ebenfalls auf den Operatorstack gelegt, allerdings werden sie beim Entfernen nicht in den Outputstream geschrieben. Bei schließenden Klammern wird der Stack bis zum Antreffen einer öffnenden Klammer geleert; sollte keine öffnende Klammer gefunden werden, ist der Inputstring unvollständig, wobei allerdings die [[Ausnahmebehandlung|Fehlerbehandlung]] nicht durch den Algorithmus definiert wird.&lt;br /&gt;
&lt;br /&gt;
== Im Detail ==&lt;br /&gt;
Es folgt ein deutscher [[Pseudocode]], der in die meisten [[Programmiersprache]]n einfach übersetzt und angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
 [[Stapelspeicher|Stack]] (mit [[Last In – First Out|LIFO]]-Prinzip) sowie Ausgabe[[Warteschlange (Datenstruktur)|queue]] (mit [[First In – First Out|FIFO]]-Prinzip) anlegen.&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;SOLANGE&amp;#039;&amp;#039;&amp;#039; Tokens verfügbar sind:&lt;br /&gt;
     Token einlesen.&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;WENN&amp;#039;&amp;#039;&amp;#039; Token IST-Zahl:&lt;br /&gt;
         Token ZU Ausgabe.&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;ENDEWENN&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;WENN&amp;#039;&amp;#039;&amp;#039; Token IST-Funktion:&lt;br /&gt;
         Token ZU Stack.&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;ENDEWENN&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;WENN&amp;#039;&amp;#039;&amp;#039; Token IST-Argumenttrennzeichen:&lt;br /&gt;
         &amp;#039;&amp;#039;&amp;#039;BIS&amp;#039;&amp;#039;&amp;#039; Stack-Spitze IST öffnende-Klammer:&lt;br /&gt;
             Stack-Spitze ZU Ausgabe.&lt;br /&gt;
             &amp;#039;&amp;#039;&amp;#039;FEHLER-BEI&amp;#039;&amp;#039;&amp;#039; Stack IST-LEER:&lt;br /&gt;
                 &amp;#039;&amp;#039;&amp;#039;GRUND&amp;#039;&amp;#039;&amp;#039; (1) Ein falsch platziertes Argumenttrennzeichen.&lt;br /&gt;
                 &amp;#039;&amp;#039;&amp;#039;GRUND&amp;#039;&amp;#039;&amp;#039; (2) Der schließenden Klammer geht keine öffnende voraus.&lt;br /&gt;
             &amp;#039;&amp;#039;&amp;#039;ENDEFEHLER&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
         &amp;#039;&amp;#039;&amp;#039;ENDEBIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;ENDEWENN&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;WENN&amp;#039;&amp;#039;&amp;#039; Token IST-Operator&lt;br /&gt;
         &amp;#039;&amp;#039;&amp;#039;SOLANGE&amp;#039;&amp;#039;&amp;#039; Stack IST-NICHT-LEER &amp;#039;&amp;#039;&amp;#039;UND&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
                 Stack-Spitze IST Operator &amp;#039;&amp;#039;&amp;#039;UND&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
                 ([[Operatorrangfolge|Präzedenz]] von Token IST-KLEINER Präzedenz von Stack-Spitze &amp;#039;&amp;#039;&amp;#039;ODER&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
                  [[Operatorrangfolge|Präzedenz]] von Token IST-GLEICH Präzedenz von Stack-Spitze &amp;#039;&amp;#039;&amp;#039;UND&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
                  Token IST-[[Operatorassoziativität|linksassoziativ]])&lt;br /&gt;
             Stack-Spitze ZU Ausgabe.&lt;br /&gt;
         &amp;#039;&amp;#039;&amp;#039;ENDESOLANGE&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
         Token ZU Stack.&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;ENDEWENN&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;WENN&amp;#039;&amp;#039;&amp;#039; Token IST öffnende-Klammer:&lt;br /&gt;
         Token ZU Stack.&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;ENDEWENN&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;WENN&amp;#039;&amp;#039;&amp;#039; Token IST schließende-Klammer:&lt;br /&gt;
         &amp;#039;&amp;#039;&amp;#039;BIS&amp;#039;&amp;#039;&amp;#039; Stack-Spitze IST öffnende-Klammer:&lt;br /&gt;
             &amp;#039;&amp;#039;&amp;#039;FEHLER-BEI&amp;#039;&amp;#039;&amp;#039; Stack IST-LEER:&lt;br /&gt;
                 GRUND (1) Der schließenden Klammer geht keine öffnende voraus.&lt;br /&gt;
             &amp;#039;&amp;#039;&amp;#039;ENDEFEHLER&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
             Stack-Spitze ZU Ausgabe.&lt;br /&gt;
         &amp;#039;&amp;#039;&amp;#039;ENDEBIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
         Stack-Spitze (öffnende-Klammer) entfernen&lt;br /&gt;
         &amp;#039;&amp;#039;&amp;#039;WENN&amp;#039;&amp;#039;&amp;#039; Stack-Spitze IST-Funktion:&lt;br /&gt;
             Stack-Spitze ZU Ausgabe.&lt;br /&gt;
         &amp;#039;&amp;#039;&amp;#039;ENDEWENN&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;ENDEWENN&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;ENDESOLANGE&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;BIS&amp;#039;&amp;#039;&amp;#039; Stack IST-LEER:&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;FEHLER-BEI&amp;#039;&amp;#039;&amp;#039; Stack-Spitze IST öffnende-Klammer:&lt;br /&gt;
         GRUND (1) Es gibt mehr öffnende als schließende Klammern.&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;ENDEFEHLER&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     Stack-Spitze ZU Ausgabe.&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;ENDEBIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Algorithmus setzt voraus, dass alle [[Tokenisierung|Token]]s vom [[Parser]] richtig erkannt werden und gültig sind. Insbesondere die Überlagerung ([[Vorzeichen (Zahl)|Vorzeichen]] versus [[Operator (Mathematik)|Operator]]) der Zeichen „+“ und „−“ übernimmt dieser Algorithmus nicht. Ein Konflikt von rechts- und linksassoziativen Operatoren mit gleicher Präzedenz wird nicht abgefangen.&lt;br /&gt;
&lt;br /&gt;
Der „lesende“ Zugriff auf den Stack (z.&amp;amp;nbsp;B. bei „Stack-Spitze IST“) und der „nehmende“ (bei „Stack-Spitze ZU“) werden vorausgesetzt.&lt;br /&gt;
&lt;br /&gt;
Vorausgesetzte Funktionen sind:&lt;br /&gt;
* Erkennen von (vorzeichenbehafteten) Zahlen&lt;br /&gt;
* Erkennen von [[Funktion (Mathematik)|Funktionen]]&lt;br /&gt;
* Erkennen von Argumenttrennzeichen&lt;br /&gt;
* Erkennen von Operatoren&lt;br /&gt;
* Feststellen der Operatorassoziativität&lt;br /&gt;
* Feststellen der Operatorpräzedenz (hier bedeutet höhere Präzedenz eine stärkere Bindung), die Präzedenz einer Funktion ist maximal&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
Die folgenden in Infixnotation gegebenen Rechnungen sollen umgeformt werden. Es wird dokumentiert, was geschieht.&lt;br /&gt;
&lt;br /&gt;
Präzedenzen: (&amp;lt;code&amp;gt;[[Addition|+]]&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;[[Subtraktion|−]]&amp;lt;/code&amp;gt;) &amp;lt; (&amp;lt;code&amp;gt;[[Multiplikation|·]]&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;[[Geteiltzeichen|:]]&amp;lt;/code&amp;gt;) &amp;lt; (&amp;lt;code&amp;gt;[[Potenz (Mathematik)|^]]&amp;lt;/code&amp;gt;) &amp;lt; Funktionen&lt;br /&gt;
&lt;br /&gt;
=== (3 + 4)(5 − 6) ===&lt;br /&gt;
# Tokens zusammenfassen: &amp;lt;code&amp;gt;(&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;)&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;(&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;−&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;)&amp;lt;/code&amp;gt; (Hier: Jedes Zeichen ist ein Token)&lt;br /&gt;
# &amp;lt;code&amp;gt;(&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;)&amp;lt;/code&amp;gt;:&lt;br /&gt;
## &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
## &amp;lt;code&amp;gt;(&amp;lt;/code&amp;gt; vom Stack entfernen&lt;br /&gt;
# Operator erwartet, aber &amp;lt;code&amp;gt;(&amp;lt;/code&amp;gt; gefunden:&lt;br /&gt;
## implizites &amp;lt;code&amp;gt;·&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
## &amp;lt;code&amp;gt;(&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;−&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;)&amp;lt;/code&amp;gt;:&lt;br /&gt;
## &amp;lt;code&amp;gt;−&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
## &amp;lt;code&amp;gt;(&amp;lt;/code&amp;gt; vom Stack entfernen&lt;br /&gt;
# Ende: &amp;lt;code&amp;gt;·&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
&lt;br /&gt;
Ausgabe:&amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;−&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;·&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1 + 2 − 3 · 4 + 5^6^7 · 8 − 9 ===&lt;br /&gt;
# Tokens zusammenfassen: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;−&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;·&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;·&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;−&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt; (Hier: Jedes Zeichen ist ein Token)&lt;br /&gt;
# &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;−&amp;lt;/code&amp;gt;:&lt;br /&gt;
## &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
## &amp;lt;code&amp;gt;−&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;·&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;:&lt;br /&gt;
## &amp;lt;code&amp;gt;·&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
## &amp;lt;code&amp;gt;−&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
## &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; auf den Stack (&amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; ist rechtsassoziativ)&lt;br /&gt;
# &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;·&amp;lt;/code&amp;gt;:&lt;br /&gt;
## &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
## &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
## &amp;lt;code&amp;gt;·&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;−&amp;lt;/code&amp;gt;:&lt;br /&gt;
## &amp;lt;code&amp;gt;·&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
## &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
## &amp;lt;code&amp;gt;−&amp;lt;/code&amp;gt; auf Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# Ende: &amp;lt;code&amp;gt;−&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
&lt;br /&gt;
Ausgabe: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;·&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;−&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;·&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;−&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explizit geklammert ([(1 + 2) − (3·4)] + {[5^(6^7)]·8}) − 9 ist dies möglicherweise einfacher nachzuvollziehen.&lt;br /&gt;
&lt;br /&gt;
=== cos(1 + sin(ln(5) − exp(8))^2) ===&lt;br /&gt;
# Tokens zusammenfassen: &amp;lt;code&amp;gt;cos&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;(&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;sin&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;(&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ln&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;(&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;)&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;−&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;exp&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;(&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;)&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;)&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;cos&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;(&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;sin&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;(&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;ln&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;(&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;:&lt;br /&gt;
## oberste &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;(&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vom Stack entfernen&lt;br /&gt;
## &amp;lt;code&amp;gt;ln&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;–&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;exp&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;(&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;:&lt;br /&gt;
## oberste &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;(&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vom Stack entfernen&lt;br /&gt;
## &amp;lt;code&amp;gt;exp&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;:&lt;br /&gt;
## &amp;lt;code&amp;gt;–&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
## oberste &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;(&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vom Stack entfernen&lt;br /&gt;
## &amp;lt;code&amp;gt;sin&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; auf den Stack&lt;br /&gt;
# &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;:&lt;br /&gt;
## &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
## &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
## oberste &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;(&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vom Stack entfernen&lt;br /&gt;
## &amp;lt;code&amp;gt;cos&amp;lt;/code&amp;gt; zur Ausgabe&lt;br /&gt;
# Ende: Keine übrigen Elemente im Stack, also fertig!&lt;br /&gt;
&lt;br /&gt;
Ausgabe: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;ln&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;exp&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;−&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;sin&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;cos&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://www.cs.utexas.edu/~EWD/MCReps/MR35.PDF Ursprüngliche Beschreibung des Algorithmus] (PDF; 1,1&amp;amp;nbsp;MB; englisch)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Algorithmus]]&lt;/div&gt;</summary>
		<author><name>imported&gt;SweetWood</name></author>
	</entry>
</feed>