|
103 | 103 | </span></span><span class=line><span class=cl><span class=err>@</span><span class=nl>second:</span><span class=w> </span><span class=kr>PRINT</span><span class=w> </span><span class=s2>"second"</span><span class=o>:</span><span class=w> </span><span class=kr>GOTO</span><span class=w> </span><span class=nl>300</span>
|
104 | 104 | </span></span><span class=line><span class=cl>
|
105 | 105 | </span></span><span class=line><span class=cl><span class=nl>300</span><span class=w> </span><span class=kr>PRINT</span><span class=w> </span><span class=s2>"third"</span>
|
106 |
| -</span></span></code></pre></div><p>The <code>@</code> prefix for label names is an EndBASIC-specific artifact required to resolve parsing ambiguities. This requirement might be relaxed in the future.</p><p>EndBASIC does not yet support defining custom functions nor procedures, but it supports <code>GOSUB</code>, which provides an unconditional jump to a target location (using the same syntax as <code>GOTO</code>) and the ability to return to the call site via <code>RETURN</code>.</p><p>You can use this feature to implementing rudimentary procedures and functions. For example:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-basic data-lang=basic><span class=line><span class=cl><span class=vg>x</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=il>3</span><span class=o>:</span><span class=w> </span><span class=vg>y</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=il>4</span><span class=o>:</span><span class=w> </span><span class=kr>GOSUB</span><span class=w> </span><span class=err>@</span><span class=vg>add</span> |
| 106 | +</span></span></code></pre></div><p>The <code>@</code> prefix for label names is an EndBASIC-specific artifact required to resolve parsing ambiguities. This requirement might be relaxed in the future.</p><p>EndBASIC also supports <code>GOSUB</code>, which provides an unconditional jump to a target location (using the same syntax as <code>GOTO</code>) and the ability to return to the call site via <code>RETURN</code>. You can use this feature to implementing rudimentary procedures and functions. For example:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-basic data-lang=basic><span class=line><span class=cl><span class=vg>x</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=il>3</span><span class=o>:</span><span class=w> </span><span class=vg>y</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=il>4</span><span class=o>:</span><span class=w> </span><span class=kr>GOSUB</span><span class=w> </span><span class=err>@</span><span class=vg>add</span> |
107 | 107 | </span></span><span class=line><span class=cl><span class=kr>PRINT</span><span class=w> </span><span class=vg>result</span>
|
108 | 108 | </span></span><span class=line><span class=cl><span class=kr>END</span>
|
109 | 109 | </span></span><span class=line><span class=cl>
|
110 | 110 | </span></span><span class=line><span class=cl><span class=err>@</span><span class=vg>add</span>
|
111 | 111 | </span></span><span class=line><span class=cl><span class=vg>result</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=vg>x</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=vg>y</span>
|
112 | 112 | </span></span><span class=line><span class=cl><span class=kr>RETURN</span>
|
113 |
| -</span></span></code></pre></div><h2 id=lang-conditionals>Conditionals</h2><h3 id=lang-if>If statements</h3><p>EndBASIC supports conditional statements (<code>IF</code>) with zero or more alternate branches (<code>ELSE IF</code> and <code>ELSE</code>).</p><p>Here is how the most simple construct looks like:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-basic data-lang=basic><span class=line><span class=cl><span class=kr>IF</span><span class=w> </span><span class=il>3</span><span class=w> </span><span class=o><</span><span class=w> </span><span class=il>5</span><span class=w> </span><span class=kr>THEN</span> |
| 113 | +</span></span></code></pre></div><p>You are encouraged to use <a href=#lang-callables>functions and subroutines</a> instead of <code>GOTO</code> and <code>GOSUB</code> where possible for cleaner code.</p><h2 id=lang-conditionals>Conditionals</h2><h3 id=lang-if>If statements</h3><p>EndBASIC supports conditional statements (<code>IF</code>) with zero or more alternate branches (<code>ELSE IF</code> and <code>ELSE</code>).</p><p>Here is how the most simple construct looks like:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-basic data-lang=basic><span class=line><span class=cl><span class=kr>IF</span><span class=w> </span><span class=il>3</span><span class=w> </span><span class=o><</span><span class=w> </span><span class=il>5</span><span class=w> </span><span class=kr>THEN</span> |
114 | 114 | </span></span><span class=line><span class=cl><span class=w> </span><span class=kr>PRINT</span><span class=w> </span><span class=s2>"Three is less than five"</span>
|
115 | 115 | </span></span><span class=line><span class=cl><span class=kr>END</span><span class=w> </span><span class=kr>IF</span>
|
116 | 116 | </span></span></code></pre></div><p>Here is a more advanced construct with multiple alternate branches:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-basic data-lang=basic><span class=line><span class=cl><span class=vg>discount#</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=kr>RND</span><span class=p>(</span><span class=il>1</span><span class=p>)</span>
|
|
0 commit comments