<?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[Binden binaere Operatoren zu schwach?]]></title><description><![CDATA[<p>Hallo Leute!</p>
<p>Ich bastle gerade an einer eigenen Programmiersprache und habe ueber Operator-Prioritaeten nachgedacht. Dabei ist mir aufgefallen, dass die Bitoperator meiner Intuition nach zu schwach binden. Beispiel:</p>
<pre><code class="language-cpp">4 | 2 &lt; 6
</code></pre>
<p>Wer erwartet, dass dieser Ausdruck false ergibt, den muss ich enttaeuschen. Anstatt</p>
<pre><code class="language-cpp">(4 | 2) &lt; 6
</code></pre>
<p>wird hier ausgewertet als:</p>
<pre><code class="language-cpp">4 | (2 &lt; 6)
</code></pre>
<p>Der Wert ist somit 5.</p>
<p>Kommt das nur mir falsch vor?</p>
<p>Gruesse,<br />
Der Kellerautomat</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307110/binden-binaere-operatoren-zu-schwach</link><generator>RSS for Node</generator><lastBuildDate>Fri, 07 Aug 2026 18:04:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307110.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 17 Aug 2012 04:57:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 04:57:24 GMT]]></title><description><![CDATA[<p>Hallo Leute!</p>
<p>Ich bastle gerade an einer eigenen Programmiersprache und habe ueber Operator-Prioritaeten nachgedacht. Dabei ist mir aufgefallen, dass die Bitoperator meiner Intuition nach zu schwach binden. Beispiel:</p>
<pre><code class="language-cpp">4 | 2 &lt; 6
</code></pre>
<p>Wer erwartet, dass dieser Ausdruck false ergibt, den muss ich enttaeuschen. Anstatt</p>
<pre><code class="language-cpp">(4 | 2) &lt; 6
</code></pre>
<p>wird hier ausgewertet als:</p>
<pre><code class="language-cpp">4 | (2 &lt; 6)
</code></pre>
<p>Der Wert ist somit 5.</p>
<p>Kommt das nur mir falsch vor?</p>
<p>Gruesse,<br />
Der Kellerautomat</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242678</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Fri, 17 Aug 2012 04:57:24 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 05:21:22 GMT]]></title><description><![CDATA[<p>Sehe ich auch so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242680</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 17 Aug 2012 05:21:22 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 05:38:14 GMT]]></title><description><![CDATA[<p>Jo, so rein intuitiv schließe ich mich an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242684</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Fri, 17 Aug 2012 05:38:14 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 06:57:15 GMT]]></title><description><![CDATA[<p>Gibt vermutlich Gründe, aus denen das Sinn macht. Sei froh dass wir nicht bei Pascal sind, da binden die Dinger so bekloppt, dass man quasi immer Klammern muss <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="😉"
    /><br />
Sollte man hier so oder so machen, gerade bei den bit-Operatoren weiß ja doch niemand so genau, wie stark/schwach die binden -&gt; Lesbarkeit erfordert schon Klammern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242694</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 17 Aug 2012 06:57:15 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 07:54:24 GMT]]></title><description><![CDATA[<p>Kellerautomat schrieb:</p>
<blockquote>
<p>Ich bastle gerade an einer eigenen Programmiersprache und habe ueber Operator-Prioritaeten nachgedacht.</p>
</blockquote>
<p>Machs wie in C, das kennen die Leute wenigstens, auch wenn es teilweise keinen Sinn zu machen scheint. BTW, gibts bei dir einen Potenzoperator? Die sind besonders lustig ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242703</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 17 Aug 2012 07:54:24 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 09:33:06 GMT]]></title><description><![CDATA[<p>Nein, es gibt derzeit keinen Potenzoperator. Die Begruendung &quot;Machs so, wie Leute das kennen&quot; hat fuer mich keinen Wert. Meine Sprache soll dem Benutzer moeglichst viel Tipparbeit und Verkrampfungen auf der Tastatur ersparen. Da ist mir ziemlich egal, was andere Programmierer (inkl. mir) gewohnt sind. <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>Z.B. habe ich die bedeutung von &amp;&amp;/&amp; und ||/| vertauscht, weil man die logischen Operatoren viel oefters braucht. Scopes werden anstatt {} durch [] markiert, weil das auf meiner englischen Tastatur kein Shift braucht. Semikolone sind grundsaetzlich unnoetig, \n ist auch ein gueltiger Terminator. if, while und for brauchen keine (). Statt [] verwende ich fuer Arrays @.</p>
<p>Das mag alles nur nach Kleinigkeiten klingen, aber in Summe betrachtet kommt da schon was zusammen. <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/2242750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242750</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Fri, 17 Aug 2012 09:33:06 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 09:41:07 GMT]]></title><description><![CDATA[<p>Ja, eine Sprache mit der keiner arbeiten will kommt da zusammen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> Das ist wie ein von QWERTY abweichendes Tastaturlayout. Vielleicht ergonomischer, aber irgendwie sinnlos.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242756</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Fri, 17 Aug 2012 09:41:07 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 09:44:57 GMT]]></title><description><![CDATA[<p>Ach was, so schlimm sieht das gar nicht aus. Herrlich sinnloses Codebeispiel:</p>
<pre><code># comment

int@ f = { 2, 4, 6 }

main(string@ args) =&gt; void
[
	foo f = new foo
	f.qux f.baz
]

type foo
[
	alias bar = foo

	baz() =&gt; int
	[
		&lt;-- ::f
		return 0
	]

	qux(int x) =&gt; void
	[
		if x % 42 == 0
			&lt;-- true

		for int i = 0; i &lt; 2; ++i
			&lt;-- i

		if .b
		[
			&lt;-- x
			--&gt; .b ? .i : x
			.b = x -&gt; bool
		]

		else &lt;-- &quot;huehuehue&quot;
	]

	bool b, c
	int i
]
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2242762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242762</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Fri, 17 Aug 2012 09:44:57 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 09:52:18 GMT]]></title><description><![CDATA[<p>Ich geh mal davon aus, du machst das nur als Lexer/Parser-Übung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /><br />
Ansonsten sieht deine Sprache nämlich genau wie jede andere C-basierte Sprache aus, dürfte keine zusätzlichen interessanten Features haben und verwendet zur allgemeinen Verwirrung andere Symbole als gewohnt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Also bitte nicht produktiv einsetzen *g*</p>
<p>BTW: &quot;=&gt; void&quot; spart jetzt aber nicht gerade Schreibarbeit.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242770</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Fri, 17 Aug 2012 09:52:18 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 10:03:07 GMT]]></title><description><![CDATA[<p>Kellerautomat schrieb:</p>
<blockquote>
<p>Kommt das nur mir falsch vor?</p>
</blockquote>
<p>Nope. Das sollte jedem komisch vorkommen <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>Der Grund warum es so ist wie es ist, ist folgender:</p>
<p>In C gabs ursprünglich &amp;&amp; und || garnicht - da hat man &amp; und | verwendet. Deshalb musste ein if(a&lt;b | b&lt;c) korrekt funktionieren. Etwas später kamen dann aber &amp;&amp; und || dazu, um short circuit zu erlauben. Aus Kompatibilitätsgründen hat man aber die Precedence von | und &amp; nicht mehr angefasst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242784</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 17 Aug 2012 10:03:07 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 10:03:53 GMT]]></title><description><![CDATA[<p>SideWinder schrieb:</p>
<blockquote>
<p>Ich geh mal davon aus, du machst das nur als Lexer/Parser-Übung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
</blockquote>
<p>Jop. Allerdings habe ich auch vor, das ganze lauffaehig zu bekommen. Der Lexer ist beretis fertig. Ich verpasse nur gerade der Grammatik den letzten Schliff, danach kommt der Parser. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>SideWinder schrieb:</p>
<blockquote>
<p>Ansonsten sieht deine Sprache nämlich genau wie jede andere C-basierte Sprache aus</p>
</blockquote>
<p>Die Aehnlichkeit ist durchaus vorhanden, ja. Aber warum auch nicht, hat sich schliesslich bewaehrt.</p>
<p>SideWinder schrieb:</p>
<blockquote>
<p>dürfte keine zusätzlichen interessanten Features haben</p>
</blockquote>
<p>Dem muss ich widersprechen. Mag sein, dass ich damit keine grossen Innovationen bringen, oder gar neue Programmierparadigmen. Aber ich versuche Dinge, die mir in C++ besonders auf den Keks gehen, loszuwerden. Eins davon ist das staendige kennzeichnen von globalen Variablen und Membern. Auf globals greift man bei mir mit :: zu, auf Member mit . <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>SideWinder schrieb:</p>
<blockquote>
<p>und verwendet zur allgemeinen Verwirrung andere Symbole als gewohnt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
</blockquote>
<p>Ich wuerde sagen, das ist Gewoehnungssache. <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>SideWinder schrieb:</p>
<blockquote>
<p>BTW: &quot;=&gt; void&quot; spart jetzt aber nicht gerade Schreibarbeit.</p>
</blockquote>
<p>Ich nenne es &quot;trailing return types done right&quot;. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242786</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Fri, 17 Aug 2012 10:03:53 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 10:11:53 GMT]]></title><description><![CDATA[<p>Ah, als Übung natürlich sehr interessant. Wie hast du Lexer/Parser geschrieben? Verwendest du flex/bison oder baust du alles von Hand?</p>
<p>Übersetzerbau war eine meiner Lieblings-LVAs im Bachelorstudium. Allerdings mussten wir die attributierte Grammatik mit &quot;ox&quot;, einem undokumentierten Uralt-Tool erledigen, pfui.</p>
<p>Lustigster Teil bleibt dann aber imho die Code-Optimierung, auch wenn man da gnadenlos jedem anderen Compiler unterlegen ist und man besser nur ein Language-Frontend für gcc bastelt.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242796</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Fri, 17 Aug 2012 10:11:53 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 10:13:39 GMT]]></title><description><![CDATA[<p>Kellerautomat schrieb:</p>
<blockquote>
<p>Ich wuerde sagen, das ist Gewoehnungssache. <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>
</blockquote>
<p>Warum verwendet man denn andere Zeichen für Dinge, die man von überall her kennt und nichtmal eine andere Bedeutung haben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242798</guid><dc:creator><![CDATA[Cyres]]></dc:creator><pubDate>Fri, 17 Aug 2012 10:13:39 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 10:16:28 GMT]]></title><description><![CDATA[<p>Cyres schrieb:</p>
<blockquote>
<p>Kellerautomat schrieb:</p>
<blockquote>
<p>Ich wuerde sagen, das ist Gewoehnungssache. <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>
</blockquote>
<p>Warum verwendet man denn andere Zeichen für Dinge, die man von überall her kennt und nichtmal eine andere Bedeutung haben?</p>
</blockquote>
<p>Hat er doch schon weiter oben beantwortet.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242801</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Fri, 17 Aug 2012 10:16:28 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 10:17:12 GMT]]></title><description><![CDATA[<p>Alles von Hand gebaut mit der C++-Standardlib only. <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/2242802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242802</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Fri, 17 Aug 2012 10:17:12 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 10:21:55 GMT]]></title><description><![CDATA[<p>SideWinder schrieb:</p>
<blockquote>
<p>Lustigster Teil bleibt dann aber imho die Code-Optimierung, auch wenn man da gnadenlos jedem anderen Compiler unterlegen ist und man besser nur ein Language-Frontend für gcc bastelt.</p>
</blockquote>
<p>Wenn das so nah an C++ ist, wie das hier klingt, kann er auch &quot;einfach&quot; nach C++ übersetzen. Je nachdem, wie nah seine Sprache ist, geht das relativ einfach.</p>
<p>mir ist allerdings nicht klar, was die &quot;--&gt;&quot; und &quot;&lt;--&quot; machen sollen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242805</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Fri, 17 Aug 2012 10:21:55 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 10:23:13 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>mir ist allerdings nicht klar, was die &quot;--&gt;&quot; und &quot;&lt;--&quot; machen sollen.</p>
</blockquote>
<p>Eingabe und Ausgabe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242810</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Fri, 17 Aug 2012 10:23:13 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 10:23:37 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>In C gabs ursprünglich &amp;&amp; und || garnicht - da hat man &amp; und | verwendet.</p>
</blockquote>
<p>Quelle dafür:<br />
<a href="http://www.lysator.liu.se/c/dmr-on-or.html" rel="nofollow">http://www.lysator.liu.se/c/dmr-on-or.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242811</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 17 Aug 2012 10:23:37 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 11:38:57 GMT]]></title><description><![CDATA[<p>Falls es jemanden interessiert: Ich habe gerade die Grammatik fertiggestellt. Zur Info: a % b bedeutet &quot;beliebig viele Vorkommen von a, getrennt durch b&quot;.</p>
<pre><code>module                    =  definition*

definition                = type-definition | function-definition | variable-definition | alias-definition | terminator
type-definition           = 'type' identifier '[' (function-definition | variable-definition | alias-definition | terminator)* ']'
function-definition       = identifier [':' parameter % ','] '=&gt;' type compound-statement
variable-definition       = type identifier '=' expression terminator
alias-definition          = 'alias' identifier = type terminator

identifier                =  {a-zA-Z_}{a-zA-Z_0-9} &amp;&amp; !built-in-type
parameter                 =  type identifier
type                      =  type-name [type-modifier]
type-name                 =  built-in-type | identifier ['.' identifier]
built-in-type             =  void | bool | char | int | float
type-modifier             = '@'

terminator                = '\n' | ';'

statement                 = selection-statement | iteration-statement | jump-statement | io-statement | definition-statement | expression-statement | compound-statement
selection-statement       = if-statement
if-statement              = 'if' expression terminator statement ['else' statement]
iteration-statement       = for-statement | while-statement
for-statement             = 'for' variable-definition | terminator expression-statement [expression] terminator statement
while-statement           = 'while' expression terminator statement
expression-statement      = [expression] terminator
jump-statement            = break-statement | continue-statement | return-statement
break-statement           = 'break' terminator
continue-statement        = 'continue' terminator
return-statement          = 'return' expression terminator
io-statement              = input-statement | output-statement
input-statement           = '--&gt;' expression terminator
output-statement          = '&lt;--' expression terminator
definition-statement      = variable-definition | alias-definition
compound-statement        = '[' statement* ']'

expression                = comma-expression          ['$' expression]
comma-expression          = assignment-expression     [',' expression]
assignment-expression     = cast-expression           [assignment-operator assignment-expression]
cast-expression           = conditional-expression    ['-&gt;' type]
conditional-expression    = logical-or-expression     ['?' expression ':' assignment-expression]
logical-or-expression     = logical-xor-expression    ['|' logical-or-expression]
logical-xor-expression    = logical-and-expression    ['^' logical-xor-expression]
logical-and-expression    = equality-expression       ['&amp;' logical-and-expression]
equality-expression       = relational-expression     ['==' | '!=' equality-expression]
relational-expression     = bitwise-or-expression     ['&lt;' | '&gt;' | '&lt;=' | '&gt;=' relational-expression]
bitwise-or-expression     = bitwise-xor-expression    ['||' bitwise-or-expression]
bitwise-xor-expression    = bitwise-and-expression    ['^^' bitwise-xor-expression]
bitwise-and-expression    = shift-expression          ['&amp;&amp;' bitwise-and-expression]
shift-expression          = additive-expression       ['&lt;&lt;' | '&gt;&gt;' shift-expression]
additive-expression       = multiplicative-expression ['+' | '-' additive-expression]
multiplicative-expression = infix-function-call       ['*' | '/' | '%' multiplicative-expression]
infix-function-call       = prefix-expression         [':' accessor ':' prefix-expression]
prefix-expression         = prefix-operator*          postfix-expression
postfix-expression        = primary-expression        [postfix-operator-sequence]
primary-expression        = '(' expression ')' | literal | accessor | 'this' | function-call | new-expression
function-call             = accessor primary-expression*
new-expression            = 'new' type

accessor                  = global-accessor | member-accessor | object-accessor
global-accessor           = '::' object-accessor
member-accessor           = '.' object-accessor
object-accessor           = identifier [member-accessor]

prefix-operator           = '+' | '-' | '++' | '--' | '!' | '~'
postfix-operator-sequence = ['@' primary-expression] postfix-operator*
postfix-operator          = '++' | '--'
assignment-operator       = '=' | '+=' | '-=' | '*=' | '/=' | '%=' | '&lt;&lt;=' | '&gt;&gt;=' | '&amp;=' | '|=' | '^=' | '&amp;&amp;=' | '||=' | '^^='

literal                   = bool-literal | int-literal | float-literal | char-literal | string-literal | array-literal
bool-literal              = 'true' | 'false'
int-literal               = digit+
float-literal             = digit+ '.' digit+
char-literal              = '\'' character '\''
string-literal            = '&quot;' character* '&quot;'
array-literal             = '{' expression % ',' '}'
</code></pre>
<p>Ist ganz schoen viel geworden. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242836</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Fri, 17 Aug 2012 11:38:57 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 11:48:36 GMT]]></title><description><![CDATA[<p>hast du die Grammatik auf irgendwelche Eigenschaften getuned? also LL(k), LR(k)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242853</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Fri, 17 Aug 2012 11:48:36 GMT</pubDate></item><item><title><![CDATA[Reply to Binden binaere Operatoren zu schwach? on Fri, 17 Aug 2012 11:52:54 GMT]]></title><description><![CDATA[<p>Nope. Ich weiss zwar, dass es verschiedene Kategorien von Grammatiken gibt, die verschwieden schwer zu parsen sind, aber so aufs erste fange ich auch mit den Wikipedia-Artikeln darueber wenig an. So genau habe ich mich mit dem Thema nicht auseinandergesetzt. Aber der Parser ist in meinem Kopf schon im Prinzip fertig. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242854</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Fri, 17 Aug 2012 11:52:54 GMT</pubDate></item></channel></rss>