<?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[Parsen von Ausdrücken &#x27;aa&#x27;, &#x27;bb&#x27; aber nicht &#x27;ab&#x27;, &#x27;ba&#x27; (mit boost.Spirit)]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche mich derzeit an einer Regel, die Ausdrücke<br />
parst, in denen zweimal das gleiche Zeichen hintereinander<br />
vorkommt.</p>
<p>Problem ist, dass ich eine größere Menge von Zeichen habe<br />
(z.B. [a-zA-Z]) und nicht alle Paare einzeln definieren kann und möchte.</p>
<p>Ich suche also eine Regel, die einen zweistelligen Ausdruck nur<br />
dann parst, wenn beide Zeichen übereinstimmen und nicht wenn zwei<br />
beliebige Zeichen aus der Grundmenge hintereinander auftreten.</p>
<p>Erster Ansatz war</p>
<pre><code>rule&lt;&gt; r = anychar_p &gt;&gt; anychar_p;
</code></pre>
<p>was natürlich sämtliche Paare parst, aber eben auch alles andere <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>
<p>Zweiter Ansatz war (pseudo-code)</p>
<pre><code>rule&lt;&gt; r = anychar_p &gt;&gt; (anychar_p - &lt;vorheriges_zeichen&gt;);
</code></pre>
<p>Aber ich weiß nicht, wie oder ob <em><strong>&lt;voriges_zeichen&gt;</strong></em> in Spirit darstellbar ist.<br />
Könnte ein Phoenix Parser so etwas?<br />
Quasi in der Art</p>
<pre><code>rule&lt;&gt; r = anychar_p[var(x)=arg1] &gt;&gt; anychar_p[var(x)!=arg1];
</code></pre>
<p>Vielleicht kann jemand helfen?</p>
<p>Gruß,<br />
Pisaro</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/217540/parsen-von-ausdrücken-aa-bb-aber-nicht-ab-ba-mit-boost-spirit</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 00:41:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/217540.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Jul 2008 15:09:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Parsen von Ausdrücken &#x27;aa&#x27;, &#x27;bb&#x27; aber nicht &#x27;ab&#x27;, &#x27;ba&#x27; (mit boost.Spirit) on Tue, 08 Jul 2008 15:09:31 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche mich derzeit an einer Regel, die Ausdrücke<br />
parst, in denen zweimal das gleiche Zeichen hintereinander<br />
vorkommt.</p>
<p>Problem ist, dass ich eine größere Menge von Zeichen habe<br />
(z.B. [a-zA-Z]) und nicht alle Paare einzeln definieren kann und möchte.</p>
<p>Ich suche also eine Regel, die einen zweistelligen Ausdruck nur<br />
dann parst, wenn beide Zeichen übereinstimmen und nicht wenn zwei<br />
beliebige Zeichen aus der Grundmenge hintereinander auftreten.</p>
<p>Erster Ansatz war</p>
<pre><code>rule&lt;&gt; r = anychar_p &gt;&gt; anychar_p;
</code></pre>
<p>was natürlich sämtliche Paare parst, aber eben auch alles andere <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>
<p>Zweiter Ansatz war (pseudo-code)</p>
<pre><code>rule&lt;&gt; r = anychar_p &gt;&gt; (anychar_p - &lt;vorheriges_zeichen&gt;);
</code></pre>
<p>Aber ich weiß nicht, wie oder ob <em><strong>&lt;voriges_zeichen&gt;</strong></em> in Spirit darstellbar ist.<br />
Könnte ein Phoenix Parser so etwas?<br />
Quasi in der Art</p>
<pre><code>rule&lt;&gt; r = anychar_p[var(x)=arg1] &gt;&gt; anychar_p[var(x)!=arg1];
</code></pre>
<p>Vielleicht kann jemand helfen?</p>
<p>Gruß,<br />
Pisaro</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1543553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1543553</guid><dc:creator><![CDATA[pisaro]]></dc:creator><pubDate>Tue, 08 Jul 2008 15:09:31 GMT</pubDate></item><item><title><![CDATA[Reply to Parsen von Ausdrücken &#x27;aa&#x27;, &#x27;bb&#x27; aber nicht &#x27;ab&#x27;, &#x27;ba&#x27; (mit boost.Spirit) on Tue, 08 Jul 2008 15:41:10 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>das kannst du mit den Funktoren für Spirit machen. In etwa so:</p>
<pre><code class="language-cpp">#include &lt;boost/spirit.hpp&gt;
#include &lt;iostream&gt;

using namespace std;
using namespace boost::spirit;

struct getChar
{
	char&amp; character;

	getChar(char&amp; char_) : character(char_){}

	template &lt;typename IteratorT&gt;
	void operator()(IteratorT character) const
	{
		this-&gt;character = character;
	}

};

int main()
{
	char p;
	struct getChar c(p);
	rule&lt;&gt; r = anychar_p[c] &gt;&gt; chlit&lt;char&gt;(p);

	if(parse(&quot;ab&quot;, r).full)
		cout &lt;&lt; &quot;Rigth&quot; &lt;&lt; endl;
	else
		cout &lt;&lt; &quot;wrong&quot; &lt;&lt; endl;
}
</code></pre>
<p>Gruß<br />
Tobi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1543567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1543567</guid><dc:creator><![CDATA[Tobias Gerg]]></dc:creator><pubDate>Tue, 08 Jul 2008 15:41:10 GMT</pubDate></item></channel></rss>