User:Nescius

From Valve Developer Community
Revision as of 14:31, 20 July 2024 by Nescius (talk | contribs)
Jump to navigation Jump to search
<div id="bodyContent" class="mw-body-content"> <div id="siteSub" class="noprint">From Valve Developer Community</div> <div id="contentSub"><div class="mw-revision"><div id="mw-revision-info">Revision as of 17:45, 12 July 2024 by <a href="/wiki/User:Nescius" class="mw-userlink" title="User:Nescius"><bdi>Nescius</bdi></a> <span class="mw-usertoollinks">(<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>)</span></div><div id="mw-revision-nav"><span class="mw-revdelundel-link">(<a href="/w/index.php?title=Special:RevisionDelete&amp;type=revision&amp;target=User%3ANescius&amp;ids=432113" title="Special:RevisionDelete">change visibility</a>)</span> (<a href="/w/index.php?title=User:Nescius&amp;diff=prev&amp;oldid=432113" title="User:Nescius">diff</a>) <a href="/w/index.php?title=User:Nescius&amp;direction=prev&amp;oldid=432113" title="User:Nescius">← Older revision</a> | <a href="/wiki/User:Nescius" title="User:Nescius">Latest revision</a> (<a href="/w/index.php?title=User:Nescius&amp;diff=cur&amp;oldid=432113" title="User:Nescius">diff</a>) | <a href="/w/index.php?title=User:Nescius&amp;direction=next&amp;oldid=432113" title="User:Nescius">Newer revision →</a> (<a href="/w/index.php?title=User:Nescius&amp;diff=next&amp;oldid=432113" title="User:Nescius">diff</a>)</div></div></div> <div id="jump-to-nav" class="mw-jump"> Jump to: <a href="#mw-head">navigation</a>, <a href="#p-search">search</a> </div> <div id="mw-content-text" lang="en" dir="ltr" class="mw-content-ltr"><div class="mw-parser-output"><div style="width:calc(100% + 48px); height:calc(100% + 22px); background-color:transparent; opacity:0.6; overflow:hidden; pointer-events:none; user-select:none; position:absolute; z-index:-1; left:-24px; top:2px"> <div style="background:linear-gradient(180deg, rgb(38,38,38) 0%, rgba(38,38,38,0) 100%); width:100%; height:250px; position:absolute; z-index:1"></div> <div style="width:100%; display:flex; justify-content:center; position:absolute; z-index:0"><span style="-webkit-mask-image:linear-gradient(to right, transparent, black 5%, black 95%, transparent);"><img alt="UserAvatar-Nescius.png" src="/w/images/c/c3/UserAvatar-Nescius.png" width="643" height="566" data-file-width="643" data-file-height="566" /></span><div style="background:linear-gradient(0deg, rgb(38,38,38) 0%, rgba(38,38,38,0) 100%); width:100%; height:250px; position:absolute; z-index:1; bottom:0"></div> </div> </div> <p><br /> </p><p><br /> </p><p><br /> </p><p><br /> </p><p><br /> </p><p><br /> </p><p><br /> </p><p><br /> </p><p><br /> </p><p><br /> </p><p><br /> </p><p><br /> </p><p><br /> </p><p><br /> </p><p><br /> </p><p><br /> </p><p><br /> </p><p><br /> I just want to see my name in blue. You can leave now </p><p>personal notes: </p> <ul><li><a rel="nofollow" class="external text" href="https://developer.valvesoftware.com/w/index.php?title=Template:CD/superclass&amp;action=edit">Template:CD/superclass</a></li> <li><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></li> <li><a href="/wiki/List_of_Source_SDK_2013_Entities" title="List of Source SDK 2013 Entities">List of Source SDK 2013 Entities</a></li> <li><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></li> <li><a href="/wiki/User:Nescius/remainingredirectlangtorelinkanddelete" title="User:Nescius/remainingredirectlangtorelinkanddelete">User:Nescius/remainingredirectlangtorelinkanddelete</a></li> <li><a href="/wiki/User:Nescius/Planned_language_page_changes" title="User:Nescius/Planned language page changes">User:Nescius/Planned language page changes</a></li></ul> <div class="mw-highlight mw-content-ltr" dir="ltr"><pre><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&#39;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">//&lt;uniquestring&gt;&lt;targetname or classname if no targetname&gt; = {}</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&#39;s m_iszScriptId netprop</span> <span class="c1">//entity&#39;s RunScriptCode,RunScriptFile inputs create this scope if it doesn&#39;t exist and executes script in it</span> <span class="c1">//also scripts specified in entity&#39;s &#39;vscripts&#39; keyvalue executed in this scope</span> <span class="p">}</span> </pre></div> <p><br /> <b>Squirrel grammar</b> </p> <div class="mw-highlight mw-content-ltr" dir="ltr"><pre><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">&#39;0x&#39;</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">&#39;&#39;&#39; [.]+ &#39;&#39;&#39;</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">&#39;.&#39;</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">&#39;.&#39;</span> <span class="s1">&#39;e&#39;</span><span class="o">|</span><span class="s1">&#39;E&#39;</span> <span class="s1">&#39;+&#39;</span><span class="o">|</span><span class="s1">&#39;-&#39;</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">&#39;&quot;&#39;</span><span class="p">[</span><span class="o">.</span><span class="p">]</span><span class="o">*</span> <span class="s1">&#39;&quot;&#39;</span> <span class="n">VerbatimStringLiteral</span><span class="p">:</span><span class="o">=</span> <span class="s1">&#39;@&#39;&#39;&quot;&#39;</span><span class="p">[</span><span class="o">.</span><span class="p">]</span><span class="o">*</span> <span class="s1">&#39;&quot;&#39;</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">&#39;+=&#39;</span> <span class="o">|</span> <span class="s1">&#39;/=&#39;</span> <span class="o">|</span> <span class="s1">&#39;-=&#39;</span> <span class="o">|</span> <span class="s1">&#39;*=&#39;</span> <span class="o">|</span> <span class="s1">&#39;%=&#39;</span> <span class="o">|</span> <span class="s1">&#39;&lt;-&#39;</span> <span class="o">|</span> <span class="s1">&#39;=&#39;</span> <span class="o">|</span> <span class="n">barithops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;+&#39;</span> <span class="o">|</span> <span class="s1">&#39;-&#39;</span> <span class="o">|</span> <span class="s1">&#39;/&#39;</span> <span class="o">|</span> <span class="s1">&#39;*&#39;</span> <span class="o">|</span> <span class="s1">&#39;%&#39;</span> <span class="n">bbitwops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;&amp;&#39;</span> <span class="o">|</span> <span class="s1">&#39;^&#39;</span> <span class="o">|</span> <span class="s1">&#39;|&#39;</span> <span class="o">|</span> <span class="s1">&#39;&gt;&gt;&#39;</span> <span class="o">|</span> <span class="s1">&#39;&lt;&lt;&#39;</span> <span class="o">|</span> <span class="s1">&#39;&gt;&gt;&gt;&#39;</span> <span class="n">blogicops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;||&#39;</span> <span class="o">|</span> <span class="s1">&#39;&amp;&amp;&#39;</span> <span class="n">bcompops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;!=&#39;</span> <span class="o">|</span> <span class="s1">&#39;==&#39;</span> <span class="o">|</span> <span class="s1">&#39;&gt;=&#39;</span> <span class="o">|</span> <span class="s1">&#39;&lt;=&#39;</span> <span class="o">|</span> <span class="s1">&#39;&gt;&#39;</span> <span class="o">|</span> <span class="s1">&#39;&lt;=&gt;&#39;</span> <span class="n">ulogicops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;!&#39;</span> <span class="n">urithops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;-&#39;</span> <span class="n">ubitwops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;~&#39;</span> <span class="n">uassignops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;++&#39;</span> <span class="o">|</span> <span class="s1">&#39;--&#39;</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">&#39;,&#39;</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">&#39;,&#39;</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">&#39;.&#39;</span> <span class="nb">id</span> <span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;::&#39;</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">&#39;=&#39;</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">&#39;&lt;-&#39;</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">&#39;?&#39;</span> <span class="n">exp</span> <span class="s1">&#39;:&#39;</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">&#39;in&#39;</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">&#39;instanceof&#39;</span> <span class="n">classexp</span> <span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;typeof&#39;</span> <span class="n">exp</span> <span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;clone&#39;</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">&#39;,&#39;</span> <span class="n">exp</span> <span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;delete&#39;</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">&#39;=&#39;</span><span class="o">|</span><span class="s1">&#39;:&#39;</span><span class="p">)</span> <span class="n">exp</span> <span class="o">|</span> <span class="s1">&#39;[&#39;</span> <span class="n">exp</span> <span class="s1">&#39;]&#39;</span> <span class="s1">&#39;=&#39;</span> <span class="n">exp</span> <span class="o">|</span> <span class="s1">&#39;&quot;&#39;</span> <span class="p">[</span><span class="o">.</span><span class="p">]</span><span class="o">*</span> <span class="s1">&#39;&quot;&#39;</span> <span class="s1">&#39;:&#39;</span> <span class="n">exp</span><span class="p">)</span> <span class="p">[</span><span class="s1">&#39;,&#39;</span><span class="p">]</span> <span class="n">exp</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;{&#39;</span> <span class="p">[</span><span class="n">tslots</span><span class="p">]</span><span class="o">*</span> <span class="s1">&#39;}&#39;</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">&#39;[&#39;</span> <span class="p">[</span><span class="n">explist</span><span class="p">]</span> <span class="s1">&#39;]&#39;</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">&#39;function&#39;</span> <span class="s1">&#39;(&#39;</span> <span class="n">args</span> <span class="s1">&#39;)&#39;</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">&#39;(&#39;</span> <span class="n">explist</span> <span class="s1">&#39;)&#39;</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">&#39;;&#39;</span><span class="o">|</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</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">&#39;{&#39;</span> <span class="n">stats</span> <span class="s1">&#39;}&#39;</span> <span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;if&#39;</span> <span class="s1">&#39;(&#39;</span> <span class="n">exp</span> <span class="s1">&#39;)&#39;</span> <span class="n">stat</span> <span class="p">[</span><span class="s1">&#39;else&#39;</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">&#39;break&#39;</span> <span class="o">|</span> <span class="s1">&#39;continue&#39;</span> <span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;for&#39;</span> <span class="s1">&#39;(&#39;</span> <span class="p">[</span><span class="n">initexp</span><span class="p">]</span> <span class="s1">&#39;;&#39;</span> <span class="p">[</span><span class="n">condexp</span><span class="p">]</span> <span class="s1">&#39;;&#39;</span> <span class="p">[</span><span class="n">incexp</span><span class="p">]</span> <span class="s1">&#39;)&#39;</span> <span class="n">stat</span> <span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;foreach&#39;</span> <span class="s1">&#39;(&#39;</span> <span class="p">[</span><span class="n">index_id</span><span class="s1">&#39;,&#39;</span><span class="p">]</span> <span class="n">value_id</span> <span class="s1">&#39;in&#39;</span> <span class="n">exp</span> <span class="s1">&#39;)&#39;</span> <span class="n">stat</span> <span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;while&#39;</span> <span class="s1">&#39;(&#39;</span> <span class="n">exp</span> <span class="s1">&#39;)&#39;</span> <span class="n">stat</span> <span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;do&#39;</span> <span class="n">stat</span> <span class="s1">&#39;while&#39;</span> <span class="s1">&#39;(&#39;</span> <span class="n">expression</span> <span class="s1">&#39;)&#39;</span> <span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;switch&#39;</span> <span class="s1">&#39;(&#39;</span> <span class="n">exp</span> <span class="s1">&#39;)&#39;</span> <span class="s1">&#39;{&#39;</span> <span class="s1">&#39;case&#39;</span> <span class="n">case_exp</span> <span class="s1">&#39;:&#39;</span> <span class="n">stats</span> <span class="p">[</span><span class="s1">&#39;default&#39;</span> <span class="s1">&#39;:&#39;</span> <span class="n">stats</span><span class="p">]</span> <span class="s1">&#39;}&#39;</span> <span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;return&#39;</span> <span class="p">[</span><span class="n">exp</span><span class="p">]</span> <span class="o">|</span> <span class="s1">&#39;yield&#39;</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">&#39;,&#39;</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">&#39;local&#39;</span> <span class="n">initz</span> <span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;const&#39;</span> <span class="nb">id</span> <span class="s1">&#39;=&#39;</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">&#39;=&#39;</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">&#39;,&#39;</span><span class="p">]</span> <span class="n">stat</span><span class="p">:</span><span class="o">=</span> <span class="s1">&#39;enum&#39;</span> <span class="nb">id</span> <span class="s1">&#39;{&#39;</span> <span class="n">enumerations</span> <span class="s1">&#39;}&#39;</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">&#39;::&#39;</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">&#39;function&#39;</span> <span class="nb">id</span> <span class="p">[</span><span class="s1">&#39;::&#39;</span> <span class="nb">id</span><span class="p">]</span><span class="o">*</span> <span class="s1">&#39;(&#39;</span> <span class="n">args</span> <span class="s1">&#39;)&#39;</span> <span class="p">[</span><span class="s1">&#39;:&#39;</span> <span class="s1">&#39;(&#39;</span> <span class="n">args</span> <span class="s1">&#39;)&#39;</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">&#39;=&#39;</span> <span class="n">exp</span> <span class="o">|</span> <span class="s1">&#39;[&#39;</span> <span class="n">exp</span> <span class="s1">&#39;]&#39;</span> <span class="s1">&#39;=&#39;</span> <span class="n">exp</span> <span class="o">|</span> <span class="n">functionstat</span> <span class="o">|</span> <span class="s1">&#39;constructor&#39;</span> <span class="n">functionexp</span> <span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;class&#39;</span> <span class="n">derefexp</span> <span class="p">[</span><span class="s1">&#39;extends&#39;</span> <span class="n">derefexp</span><span class="p">]</span> <span class="s1">&#39;{&#39;</span> <span class="p">[</span><span class="n">memberdecl</span><span class="p">]</span><span class="o">*</span> <span class="s1">&#39;}&#39;</span> <span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;try&#39;</span> <span class="n">stat</span> <span class="s1">&#39;catch&#39;</span> <span class="s1">&#39;(&#39;</span> <span class="nb">id</span> <span class="s1">&#39;)&#39;</span> <span class="n">stat</span> <span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;throw&#39;</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> </pre></div>