User:Nescius: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(Nescius changed the content model of the page User:Nescius from "wikitext" to "plain text")
Tag: content model change
No edit summary
Line 1: Line 1:
{{background
<div id="bodyContent" class="mw-body-content">
| file = UserAvatar-Nescius.png
<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>
opacity = 0.6
<div id="jump-to-nav" class="mw-jump">
gradient-height = 250px
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
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>


personal notes:
    <span class="c1">//global shortcuts {</span>
* [https://developer.valvesoftware.com/w/index.php?title=Template:CD/superclass&action=edit Template:CD/superclass]
    <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>
* [[List of Unique Entities in Valve Source Games]]
     <span class="n">g_MapScript</span> <span class="o">=</span> <span class="n">DirectorScript</span><span class="p">.</span><span class="n">MapScript</span>
* [[List of Source SDK 2013 Entities]]
* [[List of Alien Swarm: Reactive Drop Entities]]
* [[User:Nescius/remainingredirectlangtorelinkanddelete]]
* [[User:Nescius/Planned language page changes]]
 
<source lang=c>
temp_reg = null
_stack = { ... }
_registry = { ... }
_table_default_delegate = { ... } //contains table methods
_array_default_delegate = { ... } //contains array methods
_string_default_delegate = { ... } //contains string methods
_number_default_delegate = { ... } //contains integer, float, bool methods
_handle_default_delegate = { ... } //contains chandle methods(only tointeger(), used with point_script_use_target)
_utlstringtoken_default_delegate = { ... } //?
_generator_default_delegate = { ... } //contains generator methods
_thread_default_delegate = { ... } //contains thread methods
_closure_default_delegate = { ... } //contains function methods
_class_default_delegate = { ... } //contains class methods
_instance_default_delegate = { ... } //contains instance methods
_weakref_default_delegate = { ... } //contains weak reference methods
_metamethodsmap = {
  _add: 0
  _sub: 1
  _mul: 2
  _div: 3
  _unm: 4
  _modulo: 5
  _set: 6
  _get: 7
  _typeof: 8
  _nexti: 9
  _cmp: 10
  _call: 11
  _cloned: 12
  _newslot: 13
  _delslot: 14
  _tostring: 15
  _newmember: 16
  _inherited: 17
}
_lasterror = null
_errorhandler = (native function) //can be set to something else with seterrorhandler()
_consts = { ... } //variables made with const and enum go here (getconsttable())
_roottable = { //script, script_execute and mapspawn.nut executed in this scope (getroottable())
 
     //global shortcuts {
    g_ModeScript = DirectorScript.MapScript.ChallengeScript
    g_MapScript = DirectorScript.MapScript
 
    SessionOptions = g_ModeScript.DirectorOptions
    SessionState = g_ModeScript.MutationState
    SessionSpawns = g_MapScript.MapSpawns
    // }
 
    g_RoundState = { ... } //used by hints and StartBox stuff in sm_utilities
 
    g_rr = { ... } //response_testbed.nut executed in this scope
 
    GameEventCallbacks = { ... } //OnGameEvent_
    ScriptEventCallbacks = { ... } //OnScriptEvent_
 
    DirectorScript = { //director_base.nut executed in this scope
        DirectorOptions = { ... } //4


        MapScript = { //mapscripts, trigger_finale scripts and scriptedmode.nut executed in this scope
    <span class="n">SessionOptions</span> <span class="o">=</span> <span class="n">g_ModeScript</span><span class="p">.</span><span class="n">DirectorOptions</span>
            DirectorOptions = { ... } //3
    <span class="n">SessionState</span> <span class="o">=</span> <span class="n">g_ModeScript</span><span class="p">.</span><span class="n">MutationState</span>
            BaseScriptedDOTable = { ... } //added into ChallengeScript.DirectorOptions
    <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>


            //these come from mapscripts {
    <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>
            MapOptions = { ... } //added into ChallengeScript.DirectorOptions
            MapState = { ... } //added into ChallengeScript.MutationState
            MapSpawns = [] //entity groups to spawn


            SanitizeTable = { ... } //entities to remove
    <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>
            // }


            ChallengeScript = { //modescripts executed in this scope
    <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>
                MutationOptions = { ... } //added into DirectorOptions (below)
    <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>
                MutationState = { ... }
                ModeSpawns = [] //added into MapSpawns


                DirectorOptions = { ... } //1
    <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>


            LocalScript = { //director's BeginScript input runs script in this scope
        <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>
                DirectorOptions = { ... } //2
            <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>


             ScriptedDamageInfo = { ... } //used by AllowTakeDamage
             <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>


             //entity group related
             <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>
            EntityGroups = { ... }
             <span class="c1">// }</span>
            InstancedEntityGroup = { ... }
            ReplacementParms = { ... }
             UniqueTargetnames = { ... }


             //startbox related
             <span class="n">ChallengeScript</span> <span class="o">=</span> <span class="p">{</span> <span class="c1">//modescripts executed in this scope</span>
            StartboxFloating_Info = { ... }
                <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>
            StartboxCenter_Info = { ... }
                <span class="n">MutationState</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
            StartboxSpeedbump_Info = { ... }
                <span class="n">ModeSpawns</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1">//added into MapSpawns</span>


            defaultClearout = { ... } //for clearout (used in holdout)
                <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>
    }


    g_ClearoutTable = { ... } //for clearout (used in holdout)
            <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>


    //script_debug commands related
            <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>
    ScriptDebugTraces = { ... }
    ScriptDebugTextFilters = { ... }


    //documentation
            <span class="c1">//entity group related</span>
    _PublishedHelp = { ... }
            <span class="n">EntityGroups</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
    Documentation = {
            <span class="n">InstancedEntityGroup</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
        classes = { ... }
            <span class="n">ReplacementParms</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
        instances = { ... }
            <span class="n">UniqueTargetnames</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
        functions = { ... }
    }


    SPAWN_FLAGS = { ... } //entitygroup related, used in MapSpawns thingy
            <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>


    //entity scopes are created in _roottable example:
            <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>
    //<uniquestring><targetname or classname if no targetname> = {}
        <span class="p">}</span>
    _10dc_worldspawn = { ... }
     <span class="p">}</span>
    //name of this scope is saved in entity's m_iszScriptId netprop
    //entity's RunScriptCode,RunScriptFile inputs create this scope if it doesn't exist and executes script in it
     //also scripts specified in entity's 'vscripts' keyvalue executed in this scope
}


</source>
    <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>


'''Squirrel grammar'''
    <span class="c1">//documentation</span>
<source lang=py>
    <span class="n">_PublishedHelp</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
id:= [a-zA-Z_]+[a-zA-Z_0-9]* //identifier
    <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>


//literals
    <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>
IntegerLiteral := [1-9][0-9]* | '0x' [0-9A-Fa-f]+ | ''' [.]+ ''' | 0[0-7]+
FloatLiteral := [0-9]+ '.' [0-9]+
FloatLiteral := [0-9]+ '.' 'e'|'E' '+'|'-' [0-9]+
StringLiteral:= '"'[.]* '"'
VerbatimStringLiteral:= '@''"'[.]* '"'


//operators
    <span class="c1">//entity scopes are created in _roottable example:</span>
bassignops := '+=' | '/=' | '-=' | '*=' | '%=' | '<-' | '=' |
    <span class="c1">//&lt;uniquestring&gt;&lt;targetname or classname if no targetname&gt; = {}</span>
barithops := '+' | '-' |  '/' | '*' | '%'
    <span class="n">_10dc_worldspawn</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
bbitwops := '&' | '^' | '|' | '>>' | '<<' | '>>>'
    <span class="c1">//name of this scope is saved in entity&#39;s m_iszScriptId netprop</span>
blogicops := '||' | '&&'
    <span class="c1">//entity&#39;s RunScriptCode,RunScriptFile inputs create this scope if it doesn&#39;t exist and executes script in it</span>
bcompops := '!=' | '==' | '>=' | '<=' | '>' | '<=>'
    <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>


ulogicops := '!'
<span class="o">//</span><span class="n">literals</span>
urithops := '-'
<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>
ubitwops := '~'
<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>
uassignops := '++' | '--'
<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>


//other?
<span class="o">//</span><span class="n">operators</span>
explist := exp [',' explist]
<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>
args := id [',' args]
<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>


//expressions
<span class="n">ulogicops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;!&#39;</span>
derefexp := id | exp '.' id
<span class="n">urithops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;-&#39;</span>
exp := '::' id | derefexp | functionexp
<span class="n">ubitwops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;~&#39;</span>
exp := derefexp '=' exp
<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>
exp := derefexp '<-' exp
exp := exp_cond '?' exp ':' exp
exp := exp binop exp
exp := keyexp 'in' tableexp
exp := instanceexp 'instanceof' classexp
exp := 'typeof' exp
exp := 'clone' exp
exp := exp ',' exp
exp := 'delete' derefexp


tslots := ( id ('='|':') exp | '[' exp ']' '=' exp | '"' [.]* '"' ':' exp) [',']
<span class="o">//</span><span class="n">other</span><span class="err">?</span>
exp := '{' [tslots]* '}' //table constructor
<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>


exp := '[' [explist] ']' //array constructor
<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>


exp_cond := exp
<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>
initexp := exp
<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>
condexp := exp
incexp := exp
functionexp := 'function' '(' args ')' stat
exp := derefexp '(' explist ')'


//statements
<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>
stats := stat [';'|'\n'] stats
stat := '{' stats '}'
stat := 'if' '(' exp ')' stat ['else' stat]
stat := 'break' | 'continue'
stat := 'for' '(' [initexp] ';' [condexp] ';' [incexp] ')' stat
stat := 'foreach' '(' [index_id','] value_id 'in' exp ')' stat
stat := 'while' '(' exp ')' stat
stat := 'do' stat 'while' '(' expression ')'
stat := 'switch' '(' exp ')' '{'
            'case' case_exp ':'
                stats
            ['default' ':'
                stats]
        '}'
stat := 'return' [exp] | 'yield' [exp]


initz := id [= exp][',' initz]
<span class="n">exp_cond</span> <span class="p">:</span><span class="o">=</span> <span class="n">exp</span>
stat := 'local' initz
<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>


stat := 'const' id '=' IntegerLiteral | FloatLiteral | StringLiteral
<span class="o">//</span><span class="n">statements</span>
enumerations := ( id '=' Integer | FloatLiteral | StringLiteral ) [',']
<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>
stat:= 'enum' id '{' enumerations '}'
<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>


//funcname := id ['::' id]
<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>
functionstat := 'function' id ['::' id]* '(' args ')' [':' '(' args ')'] stat
<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>
stat := functionstat


memberdecl := id '=' exp | '[' exp ']' '=' exp | functionstat | 'constructor' functionexp
<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>
stat := 'class' derefexp ['extends' derefexp] '{'
<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>
          [memberdecl]*
<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>
      '}'


stat := 'try' stat 'catch' '(' id ')' stat
<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>
stat := 'throw' [exp]
<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>


stat := exp
<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>


</source>
<span class="n">stat</span> <span class="p">:</span><span class="o">=</span> <span class="n">exp</span>
</pre></div>

Revision as of 14:31, 20 July 2024

<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>