<?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[Boost::Spirit -- Grammatik funktioniert unter Windows aber unter Linux nicht]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich verwende eine vergleichsweise einfache Grammatik zur Implementierung eines Boost::Spirit Parsers für ein Datenformat auf Basis von CSV. Dieser Parser funktioniert tadellos unter Windows und parst jede Zeile einer CSV Datei fehlerlos. Als ich jetzt die Applikation unter Linux getestet habe, schlägt er bei jeder Zeile fehl.</p>
<p>Was mich sehr überrascht, ich lese eine Datei zeilenweise aus und übergebe die dann mitsamt der Grammatik an die parse funktion:</p>
<pre><code class="language-cpp">parse_info&lt;&gt; info = parse(line.c_str(), mygrammar);
if (info.full)
{
}
else
{
   // always fails
}
</code></pre>
<p>Die Schlägt fehl und liefert die ganze Zeile als nicht parsebar zurück. Ich verwende die exakt gleichen CSV-Eingabedateien. Unter Windows gibt es doch z.B. andere Zeilenenden? Die</p>
<pre><code class="language-cpp">getline(_file, line)
</code></pre>
<p>funktioniert aber und ich verwende in meiner Grammer auch keine integral Parser, die irgendwie auf ein Zeilenende warten. Ich parse lediglich die Ausgabe der getline Funktion.</p>
<p>Ich stehe ziemlich auf dem Schlau wo das Problem liegen können? Hat jemand eine Idee? Muß man bei Grammatiken unter Windows und Linux irgendwelche Unterschiede berücksichtigen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/250689/boost-spirit-grammatik-funktioniert-unter-windows-aber-unter-linux-nicht</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 22:42:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/250689.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 22 Sep 2009 15:23:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Boost::Spirit -- Grammatik funktioniert unter Windows aber unter Linux nicht on Tue, 22 Sep 2009 15:23:22 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich verwende eine vergleichsweise einfache Grammatik zur Implementierung eines Boost::Spirit Parsers für ein Datenformat auf Basis von CSV. Dieser Parser funktioniert tadellos unter Windows und parst jede Zeile einer CSV Datei fehlerlos. Als ich jetzt die Applikation unter Linux getestet habe, schlägt er bei jeder Zeile fehl.</p>
<p>Was mich sehr überrascht, ich lese eine Datei zeilenweise aus und übergebe die dann mitsamt der Grammatik an die parse funktion:</p>
<pre><code class="language-cpp">parse_info&lt;&gt; info = parse(line.c_str(), mygrammar);
if (info.full)
{
}
else
{
   // always fails
}
</code></pre>
<p>Die Schlägt fehl und liefert die ganze Zeile als nicht parsebar zurück. Ich verwende die exakt gleichen CSV-Eingabedateien. Unter Windows gibt es doch z.B. andere Zeilenenden? Die</p>
<pre><code class="language-cpp">getline(_file, line)
</code></pre>
<p>funktioniert aber und ich verwende in meiner Grammer auch keine integral Parser, die irgendwie auf ein Zeilenende warten. Ich parse lediglich die Ausgabe der getline Funktion.</p>
<p>Ich stehe ziemlich auf dem Schlau wo das Problem liegen können? Hat jemand eine Idee? Muß man bei Grammatiken unter Windows und Linux irgendwelche Unterschiede berücksichtigen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1782662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1782662</guid><dc:creator><![CDATA[GmbH]]></dc:creator><pubDate>Tue, 22 Sep 2009 15:23:22 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Spirit -- Grammatik funktioniert unter Windows aber unter Linux nicht on Tue, 22 Sep 2009 16:41:05 GMT]]></title><description><![CDATA[<p>unter Windows hast du die Zeilenenden &quot;\r\n&quot; und Linux nur &quot;\n&quot;. Das getline unter Linux kickt also nur das &quot;\n&quot; und du hast am Ende der zeile ein &quot;\r&quot; stehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1782695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1782695</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Tue, 22 Sep 2009 16:41:05 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Spirit -- Grammatik funktioniert unter Windows aber unter Linux nicht on Wed, 23 Sep 2009 08:10:43 GMT]]></title><description><![CDATA[<p>Danke, das war es...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1782897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1782897</guid><dc:creator><![CDATA[GmbH]]></dc:creator><pubDate>Wed, 23 Sep 2009 08:10:43 GMT</pubDate></item></channel></rss>