<?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[Brauche Idee für eleganten Code(Parser)]]></title><description><![CDATA[<p>Heho, ich schreibe derzeit an einem Parser für arithmetische Gleichungen(also z.B. 5*4-(3.2+5) oder so)<br />
Dies löse ich(bzw. wird am Ende gelöst) über einen Parserbaum. Dazu muss ich den String bzw. den zu verarbeitenden Ausdruck zunächst aufspalten. Dies geschieht gemäß der Operatorenvorrangigkeit.<br />
Nun ist die Frage wie ich das Auftrennen am besten vornehme.<br />
Das Problem was ich gerade habe ist folgendes:</p>
<p>Ich würde den String mittels Schleifen nacheinander nach den verschidenen Operatoren durchsuchen, also für jeden Operator eine eigene Schleife durchführen.<br />
Das ist natürlich ziemlich unelegant.</p>
<p>Meine alternative Idee war einmal den String zu durchsuchen und die Orte der Operatoren in einem Array zu speichern und diesen danach auszuwerten.<br />
Das würde mir vermutlich diverse Schleifen ersparen und könnte zielgenauer bearbeitet werden.<br />
Aber das kommt mir irgendwie ineffektiv vor, daher meine Frage ob jemandem hier eine bessere Vorgehensweise einfällt.</p>
<p>Anmerkung am Rande: Mag sein das das vorgehen mit dem Parserbaum nicht so toll ist(Idee stammt von Wiki), aber bin jetzt soweit fortgeschritten das ich es damit zu ende programmieren möchte. Also Bemerkungen die das kritisieren nicht den einzigen Inhalt eurer Posts sein lassen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Das hilft mir leider auch nicht^^</p>
<p>DAAANKE SEHR</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/265165/brauche-idee-für-eleganten-code-parser</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Jul 2026 05:16:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/265165.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Apr 2010 00:57:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Brauche Idee für eleganten Code(Parser) on Mon, 19 Apr 2010 00:57:59 GMT]]></title><description><![CDATA[<p>Heho, ich schreibe derzeit an einem Parser für arithmetische Gleichungen(also z.B. 5*4-(3.2+5) oder so)<br />
Dies löse ich(bzw. wird am Ende gelöst) über einen Parserbaum. Dazu muss ich den String bzw. den zu verarbeitenden Ausdruck zunächst aufspalten. Dies geschieht gemäß der Operatorenvorrangigkeit.<br />
Nun ist die Frage wie ich das Auftrennen am besten vornehme.<br />
Das Problem was ich gerade habe ist folgendes:</p>
<p>Ich würde den String mittels Schleifen nacheinander nach den verschidenen Operatoren durchsuchen, also für jeden Operator eine eigene Schleife durchführen.<br />
Das ist natürlich ziemlich unelegant.</p>
<p>Meine alternative Idee war einmal den String zu durchsuchen und die Orte der Operatoren in einem Array zu speichern und diesen danach auszuwerten.<br />
Das würde mir vermutlich diverse Schleifen ersparen und könnte zielgenauer bearbeitet werden.<br />
Aber das kommt mir irgendwie ineffektiv vor, daher meine Frage ob jemandem hier eine bessere Vorgehensweise einfällt.</p>
<p>Anmerkung am Rande: Mag sein das das vorgehen mit dem Parserbaum nicht so toll ist(Idee stammt von Wiki), aber bin jetzt soweit fortgeschritten das ich es damit zu ende programmieren möchte. Also Bemerkungen die das kritisieren nicht den einzigen Inhalt eurer Posts sein lassen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Das hilft mir leider auch nicht^^</p>
<p>DAAANKE SEHR</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884868</guid><dc:creator><![CDATA[kingcools]]></dc:creator><pubDate>Mon, 19 Apr 2010 00:57:59 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Idee für eleganten Code(Parser) on Mon, 19 Apr 2010 01:08:59 GMT]]></title><description><![CDATA[<p>Ich schlage einen rekursiven Abstiegsparser vor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884869</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 19 Apr 2010 01:08:59 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Idee für eleganten Code(Parser) on Mon, 19 Apr 2010 01:17:26 GMT]]></title><description><![CDATA[<p>Das hatte ich auch vor, nur muss ich ja trotzdem in dem Ausdruck nach den operatoren suchen. Gibt natürlich die find() methode, aber die macht ja auch nichts anderes als ne Schleife(Nehme ich an). Müsste dann für jeden Operator eine eigene Schleife erstellen, was ich sehr doof fände.<br />
Dnake für deine Antwort <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884870</guid><dc:creator><![CDATA[kingcools]]></dc:creator><pubDate>Mon, 19 Apr 2010 01:17:26 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Idee für eleganten Code(Parser) on Mon, 19 Apr 2010 07:21:17 GMT]]></title><description><![CDATA[<p>kingcools schrieb:</p>
<blockquote>
<p>Heho, ich schreibe derzeit an einem Parser für arithmetische Gleichungen(also z.B. 5*4-(3.2+5) oder so)..., daher meine Frage ob jemandem hier eine bessere Vorgehensweise einfällt.</p>
</blockquote>
<p>Guckst Du <a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1642138.html" rel="nofollow">hier zum Expression-Parser</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884915</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Mon, 19 Apr 2010 07:21:17 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Idee für eleganten Code(Parser) on Mon, 19 Apr 2010 07:21:43 GMT]]></title><description><![CDATA[<p>flex und bison ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884916</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 19 Apr 2010 07:21:43 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Idee für eleganten Code(Parser) on Mon, 19 Apr 2010 07:26:00 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>flex und bison ...</p>
</blockquote>
<p>Oder Spirit2, ist auch nicht weniger/mehr Overkill <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884918</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 19 Apr 2010 07:26:00 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Idee für eleganten Code(Parser) on Mon, 19 Apr 2010 08:24:11 GMT]]></title><description><![CDATA[<p>Hallo kingcools,</p>
<p>das Aufteilen übernimmt i.d.R. ein sogenannter &quot;Tokenizer&quot;, d.h. es werden von links nach rechts einzelnen Tokens extrahiert und verschieden zugeordnet (z.B. Zahlen, Schlüsselwörter, (Variablen-)Namen, Operatoren etc.), d.h. jede Tokenklasse besteht nur aus bestimmten Zeichen (z.B. Zahlen nur aus Ziffern und '.', Namen nur aus Buchstaben gefolgt von Buchstaben oder Zahlen, Operatoren nur aus Nicht-Buchstaben/Zahlen etc.).</p>
<p>Du kannst dir auch mal meine Implementierung anschauen, s.<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1808875.html#1808875" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-p-is-1808875.html#1808875</a><br />
bzw.<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1780654.html#1780654" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-p-is-1780654.html#1780654</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884945</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Mon, 19 Apr 2010 08:24:11 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Idee für eleganten Code(Parser) on Mon, 19 Apr 2010 22:10:29 GMT]]></title><description><![CDATA[<p>Vielen Dank für eure Antworten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Und die Parserbeispiele sind interessant.<br />
Hab mir aber gedacht, dass ich den krams jetzt endlich fertig haben will und da die performance beim zerlegen eines ausdrucks(nicht während der laufzeit) nicht so wichtig ist, nehm ich mal meine variante(die klobige), wobei die gepostete eigentlich so ähnlich ist, nur das ich mehr operatoren verarbeitee(alle des c standards)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1885464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1885464</guid><dc:creator><![CDATA[kingcools2]]></dc:creator><pubDate>Mon, 19 Apr 2010 22:10:29 GMT</pubDate></item></channel></rss>