<?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[Integer STate Machine]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich soll nen Compiler schreiben. Erster Schritt ist ein Lexer.<br />
Um zu prüfen ob ein Integer vorliegt , wurde mir gesagt soll ich einen endlichen Automaten implementieren. +100, 0 , 50 wären alles Integer. So würde meine Implementierung aussehen.</p>
<pre><code>bool state1,state2,state3 = false;
//Integer
bool stateInteger(char s)
{
	if(!state1 &amp;&amp;  (s =='+' || s == '-' || s=='0' || s =='1' || s =='2'|| s =='3' || s == '4' || s =='5' || s =='6' || s =='7'|| s =='8' ||  s == '9') )
	{
		state1 = true;
	}
	else if(state1 &amp;&amp; (s =='1' || s =='2'|| s =='3' || s == '4' || s =='5' || s =='6' || s =='7'|| s =='8' ||  s == '9'))
	{
		state2 = true;
	}
	else if(state1 &amp;&amp; state2 )
	{
		state1,state2 = false;
		return  true;
	}
	else
	{
		return false;
	}

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/331924/integer-state-machine</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 17:49:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/331924.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 28 Mar 2015 21:13:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Integer STate Machine on Sat, 28 Mar 2015 21:13:57 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich soll nen Compiler schreiben. Erster Schritt ist ein Lexer.<br />
Um zu prüfen ob ein Integer vorliegt , wurde mir gesagt soll ich einen endlichen Automaten implementieren. +100, 0 , 50 wären alles Integer. So würde meine Implementierung aussehen.</p>
<pre><code>bool state1,state2,state3 = false;
//Integer
bool stateInteger(char s)
{
	if(!state1 &amp;&amp;  (s =='+' || s == '-' || s=='0' || s =='1' || s =='2'|| s =='3' || s == '4' || s =='5' || s =='6' || s =='7'|| s =='8' ||  s == '9') )
	{
		state1 = true;
	}
	else if(state1 &amp;&amp; (s =='1' || s =='2'|| s =='3' || s == '4' || s =='5' || s =='6' || s =='7'|| s =='8' ||  s == '9'))
	{
		state2 = true;
	}
	else if(state1 &amp;&amp; state2 )
	{
		state1,state2 = false;
		return  true;
	}
	else
	{
		return false;
	}

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2448416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2448416</guid><dc:creator><![CDATA[MasterStudent]]></dc:creator><pubDate>Sat, 28 Mar 2015 21:13:57 GMT</pubDate></item><item><title><![CDATA[Reply to Integer STate Machine on Sat, 28 Mar 2015 21:15:32 GMT]]></title><description><![CDATA[<p>Nee, das schaut nicht gut aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2448417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2448417</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Sat, 28 Mar 2015 21:15:32 GMT</pubDate></item><item><title><![CDATA[Reply to Integer STate Machine on Sat, 28 Mar 2015 21:21:43 GMT]]></title><description><![CDATA[<p>Schreib mal ein Testprogramm, in dem du diese Implementierung verwendest.<br />
Und normalerweise nimmt man nicht mehrere bools um den State einer State-Machine zu speichern, sondern einen Integer (oder enum-Typen).</p>
<p>Dann fehlt an zwei Stellen ein <code>return</code> .<br />
Und zu guter letzt macht deine Funktion nicht das was sie machen soll. Die State-Changes sind totaler Unsinn. Du brauchst ja nur mal ein paar Beispiele im Kopf durchzugehen.</p>
<p>ps:<br />
Und <code>state1,state2 = false;</code> ist überhaupt totaler Blödsinn. Macht auch nicht das was du vermutlich glaubst was es machen soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2448419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2448419</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 28 Mar 2015 21:21:43 GMT</pubDate></item><item><title><![CDATA[Reply to Integer STate Machine on Sat, 28 Mar 2015 22:27:37 GMT]]></title><description><![CDATA[<blockquote>
<p>Und state1,state2 = false; ist überhaupt totaler Blödsinn.</p>
</blockquote>
<p>Ja klar <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="🙂"
    /> state1 bleibt im alten Zustand. Hmm. Wieso geht das dann überhaupt.</p>
<p>Und ja meine Implementierung ist sicher nicht optimal. Deswegen poste ich sie ja hier <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="🙂"
    /> Das ist schwerer als gedacht. Im Internet find ich auch nix dazu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2448424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2448424</guid><dc:creator><![CDATA[MasterStudent]]></dc:creator><pubDate>Sat, 28 Mar 2015 22:27:37 GMT</pubDate></item><item><title><![CDATA[Reply to Integer STate Machine on Sun, 29 Mar 2015 01:08:36 GMT]]></title><description><![CDATA[<p>MasterStudent schrieb:</p>
<blockquote>
<p>Ja klar <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="🙂"
    /> state1 bleibt im alten Zustand. Hmm. Wieso geht das dann überhaupt.</p>
</blockquote>
<p>In C++ gehen viele Dinge die keinen Sinn machen.<br />
Der Komma-Operator macht sehr selten Sinn. Gibt aber Fälle. z.B. kann man den in Makros manchmal gut brauchen.</p>
<p>MasterStudent schrieb:</p>
<blockquote>
<p>Und ja meine Implementierung ist sicher nicht optimal. Deswegen poste ich sie ja hier <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="🙂"
    /> Das ist schwerer als gedacht. Im Internet find ich auch nix dazu.</p>
</blockquote>
<p>Ach geh, mit <a href="https://google.com/search?q=state+machine+example" rel="nofollow">https://google.com/search?q=state+machine+example</a> findet man schon einiges.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2448429</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2448429</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 29 Mar 2015 01:08:36 GMT</pubDate></item><item><title><![CDATA[Reply to Integer STate Machine on Sun, 29 Mar 2015 09:50:30 GMT]]></title><description><![CDATA[<p>@MasterStudent: lies dir auch mal die beiden Artikel <a href="https://www.c-plusplus.net/forum/268247">Interpreterbau - Ein Anfang</a> (Scanner entspricht dem Lexer) und <a href="https://www.c-plusplus.net/forum/201764">Compilerbau</a> durch (oder überfliege sie wenigstens ;-).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2448436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2448436</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Sun, 29 Mar 2015 09:50:30 GMT</pubDate></item><item><title><![CDATA[Reply to Integer STate Machine on Sun, 29 Mar 2015 10:51:18 GMT]]></title><description><![CDATA[<p>Ich hab da eine Verständnisfrage, die ich für meine Zukunft mit dem Programmieren für wichtig halte, und die mit diesem Thema zu tun hat:<br />
Wieso mach ich nicht einfach das hier, wenn ich einen Integer haben will?</p>
<pre><code>int i;
if istream &gt;&gt; i
  // integer
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2448437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2448437</guid><dc:creator><![CDATA[hardware]]></dc:creator><pubDate>Sun, 29 Mar 2015 10:51:18 GMT</pubDate></item><item><title><![CDATA[Reply to Integer STate Machine on Sun, 29 Mar 2015 12:14:02 GMT]]></title><description><![CDATA[<p>Also mein Lexer soll folgenden Ausdruck auswerten.</p>
<p>(527+3.4)*7</p>
<p>Den Integer und Double muss ich versuchen in einen Zustand zu packen.</p>
<p>Ein Lexer würde doch auch sowas auswerten.</p>
<p>(523var) * 7</p>
<p>Der würde doch dann die Token (,523,var,),*,7 zurückliefern.</p>
<p>Das da ein Plus fehlt das merkt doch erst der Parser oder ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2448442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2448442</guid><dc:creator><![CDATA[MasterStudent]]></dc:creator><pubDate>Sun, 29 Mar 2015 12:14:02 GMT</pubDate></item><item><title><![CDATA[Reply to Integer STate Machine on Sun, 29 Mar 2015 16:23:51 GMT]]></title><description><![CDATA[<p>Gibt es im Web nee Implementierung für eine Integer State machine ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2448461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2448461</guid><dc:creator><![CDATA[MasterStudent]]></dc:creator><pubDate>Sun, 29 Mar 2015 16:23:51 GMT</pubDate></item><item><title><![CDATA[Reply to Integer STate Machine on Sun, 29 Mar 2015 18:41:05 GMT]]></title><description><![CDATA[<p>MasterStudent schrieb:</p>
<blockquote>
<p>Gibt es im Web nee Implementierung für eine Integer State machine ?</p>
</blockquote>
<p>Kläre uns doch mal auf, was Dein Ziel ist. Du hast geschrieben, dass Du einen Compiler schreiben &quot;sollst&quot;. Und jetzt fragst Du, ob es ne Implementierung im Web gibt. Also was ist das Ziel?</p>
<p>Willst Du lernen, wie man einen Compiler baut? Dann ist eine Implementierung aus dem Web keine Lösung.</p>
<p>Willst Du einfach den Schein bekommen? Dann halte ich es für besser, Du würdest den Schein nur dann bekommen, wenn Du die State-Machine nachweislich selbst geschrieben hast.</p>
<p>Oder willst Du nur eine Aufgabe lösen? Dann nimm doch einen fertigen Compiler. Die gibt es wie Sand am Meer.</p>
<p>Und da es fertige Compiler wie Sand am Meer gibt und Compiler in der Regel mit Integern umgehen können, dann wird es auch fertige Implementierungen für so eine State Machine geben.</p>
<p>Und hast Du Dich mal mit einer Anleitung zum Compilerbau wie beispielsweise den bereits erwähnten beschäftigt? Wenn nein, dann tue es und stelle dann Fragen. Wenn ja, dann frage konkret, was Du nicht verstanden hast.</p>
<p>Ich glaube kaum, dass hier jemand so auf die schnelle besser erklären kann, wie man Integer parst als jemand, der so ein Tutorial im Web veröffentlicht hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2448471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2448471</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Sun, 29 Mar 2015 18:41:05 GMT</pubDate></item><item><title><![CDATA[Reply to Integer STate Machine on Wed, 08 Apr 2015 11:22:06 GMT]]></title><description><![CDATA[<p>Finde es jetzt schade, dass ich nicht ernst genommen werde, oder als Troll abgestempelt. Wenns nämlich darum geht nen Integer zu parsen, dann bietet doch die stdlib alles was man braucht, so wie ich im vorherigen Post geschrieben habe. Der &gt;&gt; Operator für Integer macht das doch alles für mich. Oder gehts darum das Rad neu zu erfinden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2449473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2449473</guid><dc:creator><![CDATA[hardware]]></dc:creator><pubDate>Wed, 08 Apr 2015 11:22:06 GMT</pubDate></item></channel></rss>