User:Nescius
Jump to navigation
Jump to search
Revision as of 17:45, 12 July 2024 by <a href="/wiki/User:Nescius" class="mw-userlink" title="User:Nescius">Nescius</a> (<a href="/wiki/User_talk:Nescius" class="mw-usertoollinks-talk" title="User talk:Nescius">talk</a> | <a href="/wiki/Special:Contributions/Nescius" class="mw-usertoollinks-contribs" title="Special:Contributions/Nescius">contribs</a> | <a href="/wiki/Special:Block/Nescius" class="mw-usertoollinks-block" title="Special:Block/Nescius">block</a>)
I just want to see my name in blue. You can leave now
personal notes:
- <a rel="nofollow" class="external text" href="https://developer.valvesoftware.com/w/index.php?title=Template:CD/superclass&action=edit">Template:CD/superclass</a>
- <a href="/wiki/List_of_Unique_Entities_in_Valve_Source_Games" title="List of Unique Entities in Valve Source Games">List of Unique Entities in Valve Source Games</a>
- <a href="/wiki/List_of_Source_SDK_2013_Entities" title="List of Source SDK 2013 Entities">List of Source SDK 2013 Entities</a>
- <a href="/wiki/List_of_Alien_Swarm:_Reactive_Drop_Entities" title="List of Alien Swarm: Reactive Drop Entities">List of Alien Swarm: Reactive Drop Entities</a>
- <a href="/wiki/User:Nescius/remainingredirectlangtorelinkanddelete" title="User:Nescius/remainingredirectlangtorelinkanddelete">User:Nescius/remainingredirectlangtorelinkanddelete</a>
- <a href="/wiki/User:Nescius/Planned_language_page_changes" title="User:Nescius/Planned language page changes">User:Nescius/Planned language page changes</a>
<span></span><span class="n">temp_reg</span> <span class="o">=</span> <span class="n">null</span>
<span class="n">_stack</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="n">_registry</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="n">_table_default_delegate</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//contains table methods</span>
<span class="n">_array_default_delegate</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//contains array methods</span>
<span class="n">_string_default_delegate</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//contains string methods</span>
<span class="n">_number_default_delegate</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//contains integer, float, bool methods</span>
<span class="n">_handle_default_delegate</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//contains chandle methods(only tointeger(), used with point_script_use_target)</span>
<span class="n">_utlstringtoken_default_delegate</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//?</span>
<span class="n">_generator_default_delegate</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//contains generator methods</span>
<span class="n">_thread_default_delegate</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//contains thread methods</span>
<span class="n">_closure_default_delegate</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//contains function methods</span>
<span class="n">_class_default_delegate</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//contains class methods</span>
<span class="n">_instance_default_delegate</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//contains instance methods</span>
<span class="n">_weakref_default_delegate</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//contains weak reference methods</span>
<span class="n">_metamethodsmap</span> <span class="o">=</span> <span class="p">{</span>
<span class="nl">_add</span><span class="p">:</span> <span class="mi">0</span>
<span class="nl">_sub</span><span class="p">:</span> <span class="mi">1</span>
<span class="nl">_mul</span><span class="p">:</span> <span class="mi">2</span>
<span class="nl">_div</span><span class="p">:</span> <span class="mi">3</span>
<span class="nl">_unm</span><span class="p">:</span> <span class="mi">4</span>
<span class="nl">_modulo</span><span class="p">:</span> <span class="mi">5</span>
<span class="nl">_set</span><span class="p">:</span> <span class="mi">6</span>
<span class="nl">_get</span><span class="p">:</span> <span class="mi">7</span>
<span class="nl">_typeof</span><span class="p">:</span> <span class="mi">8</span>
<span class="nl">_nexti</span><span class="p">:</span> <span class="mi">9</span>
<span class="nl">_cmp</span><span class="p">:</span> <span class="mi">10</span>
<span class="nl">_call</span><span class="p">:</span> <span class="mi">11</span>
<span class="nl">_cloned</span><span class="p">:</span> <span class="mi">12</span>
<span class="nl">_newslot</span><span class="p">:</span> <span class="mi">13</span>
<span class="nl">_delslot</span><span class="p">:</span> <span class="mi">14</span>
<span class="nl">_tostring</span><span class="p">:</span> <span class="mi">15</span>
<span class="nl">_newmember</span><span class="p">:</span> <span class="mi">16</span>
<span class="nl">_inherited</span><span class="p">:</span> <span class="mi">17</span>
<span class="p">}</span>
<span class="n">_lasterror</span> <span class="o">=</span> <span class="n">null</span>
<span class="n">_errorhandler</span> <span class="o">=</span> <span class="p">(</span><span class="n">native</span> <span class="n">function</span><span class="p">)</span> <span class="c1">//can be set to something else with seterrorhandler()</span>
<span class="n">_consts</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//variables made with const and enum go here (getconsttable())</span>
<span class="n">_roottable</span> <span class="o">=</span> <span class="p">{</span> <span class="c1">//script, script_execute and mapspawn.nut executed in this scope (getroottable())</span>
<span class="c1">//global shortcuts {</span>
<span class="n">g_ModeScript</span> <span class="o">=</span> <span class="n">DirectorScript</span><span class="p">.</span><span class="n">MapScript</span><span class="p">.</span><span class="n">ChallengeScript</span>
<span class="n">g_MapScript</span> <span class="o">=</span> <span class="n">DirectorScript</span><span class="p">.</span><span class="n">MapScript</span>
<span class="n">SessionOptions</span> <span class="o">=</span> <span class="n">g_ModeScript</span><span class="p">.</span><span class="n">DirectorOptions</span>
<span class="n">SessionState</span> <span class="o">=</span> <span class="n">g_ModeScript</span><span class="p">.</span><span class="n">MutationState</span>
<span class="n">SessionSpawns</span> <span class="o">=</span> <span class="n">g_MapScript</span><span class="p">.</span><span class="n">MapSpawns</span>
<span class="c1">// }</span>
<span class="n">g_RoundState</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//used by hints and StartBox stuff in sm_utilities</span>
<span class="n">g_rr</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//response_testbed.nut executed in this scope</span>
<span class="n">GameEventCallbacks</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//OnGameEvent_</span>
<span class="n">ScriptEventCallbacks</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//OnScriptEvent_</span>
<span class="n">DirectorScript</span> <span class="o">=</span> <span class="p">{</span> <span class="c1">//director_base.nut executed in this scope</span>
<span class="n">DirectorOptions</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//4</span>
<span class="n">MapScript</span> <span class="o">=</span> <span class="p">{</span> <span class="c1">//mapscripts, trigger_finale scripts and scriptedmode.nut executed in this scope</span>
<span class="n">DirectorOptions</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//3</span>
<span class="n">BaseScriptedDOTable</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//added into ChallengeScript.DirectorOptions</span>
<span class="c1">//these come from mapscripts {</span>
<span class="n">MapOptions</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//added into ChallengeScript.DirectorOptions</span>
<span class="n">MapState</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//added into ChallengeScript.MutationState</span>
<span class="n">MapSpawns</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1">//entity groups to spawn</span>
<span class="n">SanitizeTable</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//entities to remove</span>
<span class="c1">// }</span>
<span class="n">ChallengeScript</span> <span class="o">=</span> <span class="p">{</span> <span class="c1">//modescripts executed in this scope</span>
<span class="n">MutationOptions</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//added into DirectorOptions (below)</span>
<span class="n">MutationState</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="n">ModeSpawns</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1">//added into MapSpawns</span>
<span class="n">DirectorOptions</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//1</span>
<span class="p">}</span>
<span class="n">LocalScript</span> <span class="o">=</span> <span class="p">{</span> <span class="c1">//director's BeginScript input runs script in this scope</span>
<span class="n">DirectorOptions</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//2</span>
<span class="p">}</span>
<span class="n">ScriptedDamageInfo</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//used by AllowTakeDamage</span>
<span class="c1">//entity group related</span>
<span class="n">EntityGroups</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="n">InstancedEntityGroup</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="n">ReplacementParms</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="n">UniqueTargetnames</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="c1">//startbox related</span>
<span class="n">StartboxFloating_Info</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="n">StartboxCenter_Info</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="n">StartboxSpeedbump_Info</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="n">defaultClearout</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//for clearout (used in holdout)</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="n">g_ClearoutTable</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//for clearout (used in holdout)</span>
<span class="c1">//script_debug commands related</span>
<span class="n">ScriptDebugTraces</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="n">ScriptDebugTextFilters</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="c1">//documentation</span>
<span class="n">_PublishedHelp</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="n">Documentation</span> <span class="o">=</span> <span class="p">{</span>
<span class="n">classes</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="n">instances</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="n">functions</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="p">}</span>
<span class="n">SPAWN_FLAGS</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> <span class="c1">//entitygroup related, used in MapSpawns thingy</span>
<span class="c1">//entity scopes are created in _roottable example:</span>
<span class="c1">//<uniquestring><targetname or classname if no targetname> = {}</span>
<span class="n">_10dc_worldspawn</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="c1">//name of this scope is saved in entity's m_iszScriptId netprop</span>
<span class="c1">//entity's RunScriptCode,RunScriptFile inputs create this scope if it doesn't exist and executes script in it</span>
<span class="c1">//also scripts specified in entity's 'vscripts' keyvalue executed in this scope</span>
<span class="p">}</span>
Squirrel grammar
<span></span><span class="nb">id</span><span class="p">:</span><span class="o">=</span> <span class="p">[</span><span class="n">a</span><span class="o">-</span><span class="n">zA</span><span class="o">-</span><span class="n">Z_</span><span class="p">]</span><span class="o">+</span><span class="p">[</span><span class="n">a</span><span class="o">-</span><span class="n">zA</span><span class="o">-</span><span class="n">Z_0</span><span class="o">-</span><span class="mi">9</span><span class="p">]</span><span class="o">*</span> <span class="o">//</span><span class="n">identifier</span>
<span class="o">//</span><span class="n">literals</span>
<span class="n">IntegerLiteral</span> <span class="p">:</span><span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="o">-</span><span class="mi">9</span><span class="p">][</span><span class="mi">0</span><span class="o">-</span><span class="mi">9</span><span class="p">]</span><span class="o">*</span> <span class="o">|</span> <span class="s1">'0x'</span> <span class="p">[</span><span class="mi">0</span><span class="o">-</span><span class="mi">9</span><span class="n">A</span><span class="o">-</span><span class="n">Fa</span><span class="o">-</span><span class="n">f</span><span class="p">]</span><span class="o">+</span> <span class="o">|</span> <span class="s1">''' [.]+ '''</span> <span class="o">|</span> <span class="mi">0</span><span class="p">[</span><span class="mi">0</span><span class="o">-</span><span class="mi">7</span><span class="p">]</span><span class="o">+</span>
<span class="n">FloatLiteral</span> <span class="p">:</span><span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="o">-</span><span class="mi">9</span><span class="p">]</span><span class="o">+</span> <span class="s1">'.'</span> <span class="p">[</span><span class="mi">0</span><span class="o">-</span><span class="mi">9</span><span class="p">]</span><span class="o">+</span>
<span class="n">FloatLiteral</span> <span class="p">:</span><span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="o">-</span><span class="mi">9</span><span class="p">]</span><span class="o">+</span> <span class="s1">'.'</span> <span class="s1">'e'</span><span class="o">|</span><span class="s1">'E'</span> <span class="s1">'+'</span><span class="o">|</span><span class="s1">'-'</span> <span class="p">[</span><span class="mi">0</span><span class="o">-</span><span class="mi">9</span><span class="p">]</span><span class="o">+</span>
<span class="n">StringLiteral</span><span class="p">:</span><span class="o">=</span> <span class="s1">'"'</span><span class="p">[</span><span class="o">.</span><span class="p">]</span><span class="o">*</span> <span class="s1">'"'</span>
<span class="n">VerbatimStringLiteral</span><span class="p">:</span><span class="o">=</span> <span class="s1">'@''"'</span><span class="p">[</span><span class="o">.</span><span class="p">]</span><span class="o">*</span> <span class="s1">'"'</span>
<span class="o">//</span><span class="n">operators</span>
<span class="n">bassignops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'+='</span> <span class="o">|</span> <span class="s1">'/='</span> <span class="o">|</span> <span class="s1">'-='</span> <span class="o">|</span> <span class="s1">'*='</span> <span class="o">|</span> <span class="s1">'%='</span> <span class="o">|</span> <span class="s1">'<-'</span> <span class="o">|</span> <span class="s1">'='</span> <span class="o">|</span>
<span class="n">barithops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'+'</span> <span class="o">|</span> <span class="s1">'-'</span> <span class="o">|</span> <span class="s1">'/'</span> <span class="o">|</span> <span class="s1">'*'</span> <span class="o">|</span> <span class="s1">'%'</span>
<span class="n">bbitwops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'&'</span> <span class="o">|</span> <span class="s1">'^'</span> <span class="o">|</span> <span class="s1">'|'</span> <span class="o">|</span> <span class="s1">'>>'</span> <span class="o">|</span> <span class="s1">'<<'</span> <span class="o">|</span> <span class="s1">'>>>'</span>
<span class="n">blogicops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'||'</span> <span class="o">|</span> <span class="s1">'&&'</span>
<span class="n">bcompops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'!='</span> <span class="o">|</span> <span class="s1">'=='</span> <span class="o">|</span> <span class="s1">'>='</span> <span class="o">|</span> <span class="s1">'<='</span> <span class="o">|</span> <span class="s1">'>'</span> <span class="o">|</span> <span class="s1">'<=>'</span>
<span class="n">ulogicops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'!'</span>
<span class="n">urithops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'-'</span>
<span class="n">ubitwops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'~'</span>
<span class="n">uassignops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'++'</span> <span class="o">|</span> <span class="s1">'--'</span>
<span class="o">//</span><span class="n">other</span><span class="err">?</span>
<span class="n">explist</span> <span class="p">:</span><span class="o">=</span> <span class="n">exp</span> <span class="p">[</span><span class="s1">','</span> <span class="n">explist</span><span class="p">]</span>
<span class="n">args</span> <span class="p">:</span><span class="o">=</span> <span class="nb">id</span> <span class="p">[</span><span class="s1">','</span> <span class="n">args</span><span class="p">]</span>
<span class="o">//</span><span class="n">expressions</span>
<span class="n">derefexp</span> <span class="p">:</span><span class="o">=</span> <span class="nb">id</span> <span class="o">|</span> <span class="n">exp</span> <span class="s1">'.'</span> <span class="nb">id</span>
<span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'::'</span> <span class="nb">id</span> <span class="o">|</span> <span class="n">derefexp</span> <span class="o">|</span> <span class="n">functionexp</span>
<span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="n">derefexp</span> <span class="s1">'='</span> <span class="n">exp</span>
<span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="n">derefexp</span> <span class="s1">'<-'</span> <span class="n">exp</span>
<span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="n">exp_cond</span> <span class="s1">'?'</span> <span class="n">exp</span> <span class="s1">':'</span> <span class="n">exp</span>
<span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="n">exp</span> <span class="n">binop</span> <span class="n">exp</span>
<span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="n">keyexp</span> <span class="s1">'in'</span> <span class="n">tableexp</span>
<span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="n">instanceexp</span> <span class="s1">'instanceof'</span> <span class="n">classexp</span>
<span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'typeof'</span> <span class="n">exp</span>
<span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'clone'</span> <span class="n">exp</span>
<span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="n">exp</span> <span class="s1">','</span> <span class="n">exp</span>
<span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'delete'</span> <span class="n">derefexp</span>
<span class="n">tslots</span> <span class="p">:</span><span class="o">=</span> <span class="p">(</span> <span class="nb">id</span> <span class="p">(</span><span class="s1">'='</span><span class="o">|</span><span class="s1">':'</span><span class="p">)</span> <span class="n">exp</span> <span class="o">|</span> <span class="s1">'['</span> <span class="n">exp</span> <span class="s1">']'</span> <span class="s1">'='</span> <span class="n">exp</span> <span class="o">|</span> <span class="s1">'"'</span> <span class="p">[</span><span class="o">.</span><span class="p">]</span><span class="o">*</span> <span class="s1">'"'</span> <span class="s1">':'</span> <span class="n">exp</span><span class="p">)</span> <span class="p">[</span><span class="s1">','</span><span class="p">]</span>
<span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'{'</span> <span class="p">[</span><span class="n">tslots</span><span class="p">]</span><span class="o">*</span> <span class="s1">'}'</span> <span class="o">//</span><span class="n">table</span> <span class="n">constructor</span>
<span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'['</span> <span class="p">[</span><span class="n">explist</span><span class="p">]</span> <span class="s1">']'</span> <span class="o">//</span><span class="n">array</span> <span class="n">constructor</span>
<span class="n">exp_cond</span> <span class="p">:</span><span class="o">=</span> <span class="n">exp</span>
<span class="n">initexp</span> <span class="p">:</span><span class="o">=</span> <span class="n">exp</span>
<span class="n">condexp</span> <span class="p">:</span><span class="o">=</span> <span class="n">exp</span>
<span class="n">incexp</span> <span class="p">:</span><span class="o">=</span> <span class="n">exp</span>
<span class="n">functionexp</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'function'</span> <span class="s1">'('</span> <span class="n">args</span> <span class="s1">')'</span> <span class="n">stat</span>
<span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="n">derefexp</span> <span class="s1">'('</span> <span class="n">explist</span> <span class="s1">')'</span>
<span class="o">//</span><span class="n">statements</span>
<span class="n">stats</span> <span class="p">:</span><span class="o">=</span> <span class="n">stat</span> <span class="p">[</span><span class="s1">';'</span><span class="o">|</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">]</span> <span class="n">stats</span>
<span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'{'</span> <span class="n">stats</span> <span class="s1">'}'</span>
<span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'if'</span> <span class="s1">'('</span> <span class="n">exp</span> <span class="s1">')'</span> <span class="n">stat</span> <span class="p">[</span><span class="s1">'else'</span> <span class="n">stat</span><span class="p">]</span>
<span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'break'</span> <span class="o">|</span> <span class="s1">'continue'</span>
<span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'for'</span> <span class="s1">'('</span> <span class="p">[</span><span class="n">initexp</span><span class="p">]</span> <span class="s1">';'</span> <span class="p">[</span><span class="n">condexp</span><span class="p">]</span> <span class="s1">';'</span> <span class="p">[</span><span class="n">incexp</span><span class="p">]</span> <span class="s1">')'</span> <span class="n">stat</span>
<span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'foreach'</span> <span class="s1">'('</span> <span class="p">[</span><span class="n">index_id</span><span class="s1">','</span><span class="p">]</span> <span class="n">value_id</span> <span class="s1">'in'</span> <span class="n">exp</span> <span class="s1">')'</span> <span class="n">stat</span>
<span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'while'</span> <span class="s1">'('</span> <span class="n">exp</span> <span class="s1">')'</span> <span class="n">stat</span>
<span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'do'</span> <span class="n">stat</span> <span class="s1">'while'</span> <span class="s1">'('</span> <span class="n">expression</span> <span class="s1">')'</span>
<span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'switch'</span> <span class="s1">'('</span> <span class="n">exp</span> <span class="s1">')'</span> <span class="s1">'{'</span>
<span class="s1">'case'</span> <span class="n">case_exp</span> <span class="s1">':'</span>
<span class="n">stats</span>
<span class="p">[</span><span class="s1">'default'</span> <span class="s1">':'</span>
<span class="n">stats</span><span class="p">]</span>
<span class="s1">'}'</span>
<span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'return'</span> <span class="p">[</span><span class="n">exp</span><span class="p">]</span> <span class="o">|</span> <span class="s1">'yield'</span> <span class="p">[</span><span class="n">exp</span><span class="p">]</span>
<span class="n">initz</span> <span class="p">:</span><span class="o">=</span> <span class="nb">id</span> <span class="p">[</span><span class="o">=</span> <span class="n">exp</span><span class="p">][</span><span class="s1">','</span> <span class="n">initz</span><span class="p">]</span>
<span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'local'</span> <span class="n">initz</span>
<span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'const'</span> <span class="nb">id</span> <span class="s1">'='</span> <span class="n">IntegerLiteral</span> <span class="o">|</span> <span class="n">FloatLiteral</span> <span class="o">|</span> <span class="n">StringLiteral</span>
<span class="n">enumerations</span> <span class="p">:</span><span class="o">=</span> <span class="p">(</span> <span class="nb">id</span> <span class="s1">'='</span> <span class="n">Integer</span> <span class="o">|</span> <span class="n">FloatLiteral</span> <span class="o">|</span> <span class="n">StringLiteral</span> <span class="p">)</span> <span class="p">[</span><span class="s1">','</span><span class="p">]</span>
<span class="n">stat</span><span class="p">:</span><span class="o">=</span> <span class="s1">'enum'</span> <span class="nb">id</span> <span class="s1">'{'</span> <span class="n">enumerations</span> <span class="s1">'}'</span>
<span class="o">//</span><span class="n">funcname</span> <span class="p">:</span><span class="o">=</span> <span class="nb">id</span> <span class="p">[</span><span class="s1">'::'</span> <span class="nb">id</span><span class="p">]</span>
<span class="n">functionstat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'function'</span> <span class="nb">id</span> <span class="p">[</span><span class="s1">'::'</span> <span class="nb">id</span><span class="p">]</span><span class="o">*</span> <span class="s1">'('</span> <span class="n">args</span> <span class="s1">')'</span> <span class="p">[</span><span class="s1">':'</span> <span class="s1">'('</span> <span class="n">args</span> <span class="s1">')'</span><span class="p">]</span> <span class="n">stat</span>
<span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="n">functionstat</span>
<span class="n">memberdecl</span> <span class="p">:</span><span class="o">=</span> <span class="nb">id</span> <span class="s1">'='</span> <span class="n">exp</span> <span class="o">|</span> <span class="s1">'['</span> <span class="n">exp</span> <span class="s1">']'</span> <span class="s1">'='</span> <span class="n">exp</span> <span class="o">|</span> <span class="n">functionstat</span> <span class="o">|</span> <span class="s1">'constructor'</span> <span class="n">functionexp</span>
<span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'class'</span> <span class="n">derefexp</span> <span class="p">[</span><span class="s1">'extends'</span> <span class="n">derefexp</span><span class="p">]</span> <span class="s1">'{'</span>
<span class="p">[</span><span class="n">memberdecl</span><span class="p">]</span><span class="o">*</span>
<span class="s1">'}'</span>
<span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'try'</span> <span class="n">stat</span> <span class="s1">'catch'</span> <span class="s1">'('</span> <span class="nb">id</span> <span class="s1">')'</span> <span class="n">stat</span>
<span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">'throw'</span> <span class="p">[</span><span class="n">exp</span><span class="p">]</span>
<span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="n">exp</span>