<?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[spirit Grammatik]]></title><description><![CDATA[<p>hey,</p>
<p>schreib grad an einem parser der eine Assembler ähnliche sprache einlesen soll natürlich im umfang stark reduziert. Ich hab auch eine erste version fertig nur muss der code linear nacheinander ablaufen das heißt die Eingabe sieht zurzeit so aus</p>
<pre><code>DAT.F   #0, #0     ; Pointer to target instruction.
ADD.AB  #4, $-1    ; Increments pointer by step.
MOV.AB  #0, @-2    ; Bombs target instruction.
JMP.A   $-2, #0    ; Loops back two instructions.
</code></pre>
<p>Ich will jetzt aber auch mit dem wort ORG(&quot;ORiGin&quot;) den Startpunkt setzen und mit END das ende außerdem will ich referencen oder aliases benutzen können. Also ich möchte mit EQU(&quot;EQUate&quot;) ein alias setzten bzw. &quot;Name EQU alias&quot;. hier ein Bsp.:</p>
<pre><code>step    EQU      4
</code></pre>
<p>Ich benutze die spirit lib und hier ist meine Grammatik:</p>
<pre><code class="language-cpp">definition( Redcode const &amp;self )
        {

		 assembly_file = 
  	        +line
				;
		 line = 
			 instruction
				;
         instruction =
             opcode &gt;&gt; '.' &gt;&gt; modifier &gt;&gt; mode &gt;&gt; number &gt;&gt; ',' &gt;&gt; mode &gt;&gt; number
				;
         opcode =
			 boost::spirit::str_p(&quot;DAT&quot;) | boost::spirit::str_p(&quot;MOV&quot;) | boost::spirit::str_p(&quot;ADD&quot;) | 
			 boost::spirit::str_p(&quot;SUB&quot;) | boost::spirit::str_p(&quot;MUL&quot;) | boost::spirit::str_p(&quot;DIV&quot;) | 
			 boost::spirit::str_p(&quot;MOD&quot;) | boost::spirit::str_p(&quot;JMP&quot;) | boost::spirit::str_p(&quot;JMZ&quot;) | 
			 boost::spirit::str_p(&quot;JMN&quot;) | boost::spirit::str_p(&quot;DJN&quot;) | boost::spirit::str_p(&quot;CMP&quot;) | 
			 boost::spirit::str_p(&quot;SLT&quot;) | boost::spirit::str_p(&quot;SPL&quot;) | boost::spirit::str_p(&quot;ORG&quot;) | 
			 boost::spirit::str_p(&quot;EQU&quot;) | boost::spirit::str_p(&quot;END&quot;) 
				;
         modifier =
			 boost::spirit::str_p(&quot;BA&quot;) | boost::spirit::str_p(&quot;AB&quot;) | boost::spirit::ch_p('A') | 
             boost::spirit::ch_p('B')   | boost::spirit::ch_p('F')   | boost::spirit::ch_p('X') | 
			 boost::spirit::ch_p('I') 
				 ;
         mode =  
			 boost::spirit::ch_p('#') | boost::spirit::ch_p('$') | boost::spirit::ch_p('@') | 
             boost::spirit::ch_p('&lt;') | boost::spirit::ch_p('&gt;')
				;
         number = 
			 boost::spirit::int_p
				;
		 alphanumeral =
			 boost::spirit::alnum_p
				;
}
...
        boost::spirit::rule&lt;ScannerT, boost::spirit::parser_context&lt;&gt;, boost::spirit::parser_tag&lt;assembly_fileID&gt; &gt; const&amp;
		start() const { return assembly_file; }
</code></pre>
<p>hoffe ihr könnt mir weiterhelfen <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/topic/119244/spirit-grammatik</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 23:17:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/119244.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Aug 2005 23:49:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to spirit Grammatik on Mon, 29 Aug 2005 23:49:50 GMT]]></title><description><![CDATA[<p>hey,</p>
<p>schreib grad an einem parser der eine Assembler ähnliche sprache einlesen soll natürlich im umfang stark reduziert. Ich hab auch eine erste version fertig nur muss der code linear nacheinander ablaufen das heißt die Eingabe sieht zurzeit so aus</p>
<pre><code>DAT.F   #0, #0     ; Pointer to target instruction.
ADD.AB  #4, $-1    ; Increments pointer by step.
MOV.AB  #0, @-2    ; Bombs target instruction.
JMP.A   $-2, #0    ; Loops back two instructions.
</code></pre>
<p>Ich will jetzt aber auch mit dem wort ORG(&quot;ORiGin&quot;) den Startpunkt setzen und mit END das ende außerdem will ich referencen oder aliases benutzen können. Also ich möchte mit EQU(&quot;EQUate&quot;) ein alias setzten bzw. &quot;Name EQU alias&quot;. hier ein Bsp.:</p>
<pre><code>step    EQU      4
</code></pre>
<p>Ich benutze die spirit lib und hier ist meine Grammatik:</p>
<pre><code class="language-cpp">definition( Redcode const &amp;self )
        {

		 assembly_file = 
  	        +line
				;
		 line = 
			 instruction
				;
         instruction =
             opcode &gt;&gt; '.' &gt;&gt; modifier &gt;&gt; mode &gt;&gt; number &gt;&gt; ',' &gt;&gt; mode &gt;&gt; number
				;
         opcode =
			 boost::spirit::str_p(&quot;DAT&quot;) | boost::spirit::str_p(&quot;MOV&quot;) | boost::spirit::str_p(&quot;ADD&quot;) | 
			 boost::spirit::str_p(&quot;SUB&quot;) | boost::spirit::str_p(&quot;MUL&quot;) | boost::spirit::str_p(&quot;DIV&quot;) | 
			 boost::spirit::str_p(&quot;MOD&quot;) | boost::spirit::str_p(&quot;JMP&quot;) | boost::spirit::str_p(&quot;JMZ&quot;) | 
			 boost::spirit::str_p(&quot;JMN&quot;) | boost::spirit::str_p(&quot;DJN&quot;) | boost::spirit::str_p(&quot;CMP&quot;) | 
			 boost::spirit::str_p(&quot;SLT&quot;) | boost::spirit::str_p(&quot;SPL&quot;) | boost::spirit::str_p(&quot;ORG&quot;) | 
			 boost::spirit::str_p(&quot;EQU&quot;) | boost::spirit::str_p(&quot;END&quot;) 
				;
         modifier =
			 boost::spirit::str_p(&quot;BA&quot;) | boost::spirit::str_p(&quot;AB&quot;) | boost::spirit::ch_p('A') | 
             boost::spirit::ch_p('B')   | boost::spirit::ch_p('F')   | boost::spirit::ch_p('X') | 
			 boost::spirit::ch_p('I') 
				 ;
         mode =  
			 boost::spirit::ch_p('#') | boost::spirit::ch_p('$') | boost::spirit::ch_p('@') | 
             boost::spirit::ch_p('&lt;') | boost::spirit::ch_p('&gt;')
				;
         number = 
			 boost::spirit::int_p
				;
		 alphanumeral =
			 boost::spirit::alnum_p
				;
}
...
        boost::spirit::rule&lt;ScannerT, boost::spirit::parser_context&lt;&gt;, boost::spirit::parser_tag&lt;assembly_fileID&gt; &gt; const&amp;
		start() const { return assembly_file; }
</code></pre>
<p>hoffe ihr könnt mir weiterhelfen <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/861024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861024</guid><dc:creator><![CDATA[mosta]]></dc:creator><pubDate>Mon, 29 Aug 2005 23:49:50 GMT</pubDate></item><item><title><![CDATA[Reply to spirit Grammatik on Tue, 30 Aug 2005 03:41:51 GMT]]></title><description><![CDATA[<p>wo _genau_ liegt dein problem?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861044</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Tue, 30 Aug 2005 03:41:51 GMT</pubDate></item><item><title><![CDATA[Reply to spirit Grammatik on Tue, 30 Aug 2005 03:46:22 GMT]]></title><description><![CDATA[<p>ich weiß nicht wie ich die Grammatik erweitern soll, damit die funktion implementiert wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861045</guid><dc:creator><![CDATA[mosta]]></dc:creator><pubDate>Tue, 30 Aug 2005 03:46:22 GMT</pubDate></item><item><title><![CDATA[Reply to spirit Grammatik on Tue, 30 Aug 2005 04:04:34 GMT]]></title><description><![CDATA[<p>ich weis zwar immernoch nichts über deine gedankengänge und wo es hakt, aber ich mach mal nen schuss ins blaue:</p>
<p><a href="http://www.boost.org/libs/spirit/doc/symbols.html" rel="nofollow">http://www.boost.org/libs/spirit/doc/symbols.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/861047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861047</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Tue, 30 Aug 2005 04:04:34 GMT</pubDate></item><item><title><![CDATA[Reply to spirit Grammatik on Mon, 05 Sep 2005 05:55:46 GMT]]></title><description><![CDATA[<p>die antwort kommt einbisschen spät aber besser als nie <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>wollt mich nur für die antwort bedanken</p>
]]></description><link>https://www.c-plusplus.net/forum/post/865053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/865053</guid><dc:creator><![CDATA[mosta]]></dc:creator><pubDate>Mon, 05 Sep 2005 05:55:46 GMT</pubDate></item></channel></rss>