<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Parser der mathematische Ausdrücke vereinfacht]]></title><description><![CDATA[<p>Hey C++ler,</p>
<p>in dem Interpreterbau Tutorial wird zwar ein AST generiert, leider ist es nicht möglich mit diesem Ausdrücke zu vereinfachen (5+Pi+1 wird in dem Fall ausgerechnet und nicht zu Pi+6 vereinfacht). Geht das mit dem Ansatz, dass die Nodes ihr Ergebnis selber rechnen und dann zurückgeben überhaupt? Wenn nicht, wie dann? Ohne AST?</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/327059/parser-der-mathematische-ausdrücke-vereinfacht</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 20:21:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/327059.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Jul 2014 15:19:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Parser der mathematische Ausdrücke vereinfacht on Mon, 21 Jul 2014 15:19:02 GMT]]></title><description><![CDATA[<p>Hey C++ler,</p>
<p>in dem Interpreterbau Tutorial wird zwar ein AST generiert, leider ist es nicht möglich mit diesem Ausdrücke zu vereinfachen (5+Pi+1 wird in dem Fall ausgerechnet und nicht zu Pi+6 vereinfacht). Geht das mit dem Ansatz, dass die Nodes ihr Ergebnis selber rechnen und dann zurückgeben überhaupt? Wenn nicht, wie dann? Ohne AST?</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409754</guid><dc:creator><![CDATA[cac]]></dc:creator><pubDate>Mon, 21 Jul 2014 15:19:02 GMT</pubDate></item><item><title><![CDATA[Reply to Parser der mathematische Ausdrücke vereinfacht on Mon, 21 Jul 2014 15:34:03 GMT]]></title><description><![CDATA[<p>Ein AST ist schon der richtige Ansatz.</p>
<p>Besser als ein binäres plus ist allerdings ein plus, das beliebig viele Argumente nimmt. Also Node Plus mit vector&lt;Node&gt; Operands; Dann kannst du Operands analysieren und vereinfachen was geht.</p>
<p>Auch musst du drüber nachdenken, wie du (1+pi)*2 in 2*1 + 2*pi vereinfachst. Im Grunde geht das genauso.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409758</guid><dc:creator><![CDATA[astloch]]></dc:creator><pubDate>Mon, 21 Jul 2014 15:34:03 GMT</pubDate></item><item><title><![CDATA[Reply to Parser der mathematische Ausdrücke vereinfacht on Mon, 21 Jul 2014 15:36:44 GMT]]></title><description><![CDATA[<p>Mit einem AST geht das. Google mal nach <em>Constant Propagation</em> und <em>Constant Folding</em> (oder etwas allgemeiner <em>Dataflow Analysis</em>).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409760</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Mon, 21 Jul 2014 15:36:44 GMT</pubDate></item><item><title><![CDATA[Reply to Parser der mathematische Ausdrücke vereinfacht on Mon, 21 Jul 2014 15:37:03 GMT]]></title><description><![CDATA[<p>Ich bin etwas unerfahren mit Parsern und Interpretern. Ist es praktischer, das ganze über eine eval() Funktion in jeder Node zu machen, oder einen Walker zu programmieren, der über den ganzen AST &quot;geht&quot; und evaluiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409761</guid><dc:creator><![CDATA[cac]]></dc:creator><pubDate>Mon, 21 Jul 2014 15:37:03 GMT</pubDate></item><item><title><![CDATA[Reply to Parser der mathematische Ausdrücke vereinfacht on Mon, 21 Jul 2014 15:48:47 GMT]]></title><description><![CDATA[<p>Kommt drauf an, wie viel du machen willst. Eine eval()-Funktion ist grundsätzlich am einfachsten, hat aber ihre Grenzen. Du willst eigentlich nicht die ganze Logik in den AST-Klassen unterbringen und Umbauen vom AST ist auch nicht so einfach (bei &quot;(1+pi)*2&quot; --&gt; &quot;2*1 + 2*pi&quot; ändert der Top-Knoten von * in +).</p>
<p>Wenn du mehr als ein simples eval() willst, dann bau dir einen Visitor. Überlege dir ausserdem effiziente RTTI-Abfragen (&quot;ist dieser Knoten vom Typ X?&quot;) -- dynamic_cast ist da auf Dauer langsam und umständlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409762</guid><dc:creator><![CDATA[astloch]]></dc:creator><pubDate>Mon, 21 Jul 2014 15:48:47 GMT</pubDate></item></channel></rss>