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 "plain text" to "wikitext")
Tag: content model change
No edit summary
 
(34 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<div id="bodyContent" class="mw-body-content">
<div style="width:calc(100% - 232px); 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 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="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 style="width:100%; display:flex; justify-content:center; position:absolute; z-index:0"><!--
--><span style="{{#switch:|false=|-webkit-mask-image:linear-gradient(to right, transparent, black 5%, black 95%, transparent);}}">[[File:Background - Rocket Raccoon.jpg|link=|]]</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>
</div>
</div>
<p><br />
{{DISPLAYTITLE:Nescius' notes}}
</p><p><br />
[[File:nesciusprofileimage.jpg|250px|frameless|right]]
</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>


    <span class="c1">//global shortcuts {</span>
personal notes:
    <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>
* [https://developer.valvesoftware.com/w/index.php?title=Template:CD/superclass&action=edit Template:CD/superclass]
    <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 unique entities in Valve Source games]]
* [[List of Source SDK 2013 Entities]]
* [[List of Alien Swarm: Reactive Drop Entities]]
* [[/list of half life ents]]
* [[/Planned language page changes]]
* [[User:Nesciuse]]
* [[Special:PrefixIndex/User:Nescius/]]
* [[/l4d2netprops-compact]]
* [[List of datamap and netprop dumps]]
* [[/favourites]]
* [[Wiki FGD lookup]] (todo)
* [[User:Nescius/command overview]]
 
regexen:
<pre>
(?:(?<f>{{autolang(?<m>\s*\|\s*))|(?<s>^\s*\|\s*(?!#default|nt|id)(?<lang>\w\w(-\w\w)?\s*=))|(?<toi>(?<oi><onlyinclude>)(?<io><includeonly>))|(?<tio>(?<eio></includeonly>)(?<eoi></onlyinclude>)))
 
(?{f}{{#switch\: {{{lang|{{ROOTPAGENAME}}}}}$+{m}#default = :(?{s}\t| \u$+{lang}:(?{toi}\r\n$+{io}\r\n\r\n$+{oi}:$+{eoi}\r\n\r\n$+{eio}))
</pre>
 
<pre>
\[\[(?!#)(?:(?<c>:Category:(?<cl>.*?))|(?<a>Category:(?<al>.*?))|(?<h>:?Help:(?<hl>.*?))|(?<v>:?(?:Project|Valve[ _]Developer[ _]Community):(?<vl>.*?))|(?<s>:?Special:(?<sl>.*?))|(?<m>:?(?!File([ _]talk)?:|Image([ _]talk)?:|Media:|Template([ _]talk)?:|MediaWiki([ _]talk)?:|Talk:|Category[ _]talk:|Project[ _]talk:|Valve[ _]Developer[ _]Community[ _]talk:|Help[ _]talk:|User([ _]talk)?:|c:|commons:|Dictionary:|Google:|GoogleGroups:|IMDB:|M:|Meta:|Metawikipedia:|MW:|SdkBug:|SourceForge:|Steampowered:|W:|Wiki:|WikiBooks:|Wikipedia:|Wikiquote:|Wiktionary:|WP:)(?<ml>.*?)))\]\]
 
(?{c}{{LCategory|$+{cl}}}:(?{a}{{ACategory|$+{al}}}:(?{h}{{LHelp|$+{hl}}}:(?{v}{{LProject|$+{vl}}}:(?{s}{{LSpecial|$+{sl}}}:(?{m}{{L|$+{ml}}}:))))))
</pre>
 
stuff:
<syntaxhighlight lang=c style="background:initial">
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


    <span class="n">SessionOptions</span> <span class="o">=</span> <span class="n">g_ModeScript</span><span class="p">.</span><span class="n">DirectorOptions</span>
        MapScript = { //mapscripts, trigger_finale scripts and scriptedmode.nut executed in this scope
    <span class="n">SessionState</span> <span class="o">=</span> <span class="n">g_ModeScript</span><span class="p">.</span><span class="n">MutationState</span>
            DirectorOptions = { ... } //3
    <span class="n">SessionSpawns</span> <span class="o">=</span> <span class="n">g_MapScript</span><span class="p">.</span><span class="n">MapSpawns</span>
            BaseScriptedDOTable = { ... } //added into ChallengeScript.DirectorOptions
    <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>
            //these come from mapscripts {
            MapOptions = { ... } //added into ChallengeScript.DirectorOptions
            MapState = { ... } //added into ChallengeScript.MutationState
            MapSpawns = [] //entity groups to spawn


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


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


    <span class="n">DirectorScript</span> <span class="o">=</span> <span class="p">{</span> <span class="c1">//director_base.nut executed in this scope</span>
                DirectorOptions = { ... } //1
        <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>
            LocalScript = { //director's BeginScript input runs script in this scope
            <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>
                DirectorOptions = { ... } //2
             <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>
             ScriptedDamageInfo = { ... } //used by AllowTakeDamage
            <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>
             //entity group related
             <span class="c1">// }</span>
            EntityGroups = { ... }
            InstancedEntityGroup = { ... }
            ReplacementParms = { ... }
             UniqueTargetnames = { ... }


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


                <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>
            defaultClearout = { ... } //for clearout (used in holdout)
            <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>
    g_ClearoutTable = { ... } //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">//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>
    //script_debug commands related
    ScriptDebugTraces = { ... }
    ScriptDebugTextFilters = { ... }


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


            <span class="c1">//startbox related</span>
    SPAWN_FLAGS = { ... } //entitygroup related, used in MapSpawns thingy
            <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>
    //entity scopes are created in _roottable example:
        <span class="p">}</span>
    //<uniquestring><targetname or classname if no targetname> = {}
    <span class="p">}</span>
    _10dc_worldspawn = { ... }
    //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
}


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


    <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>
'''Squirrel grammar'''
    <span class="n">_PublishedHelp</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<syntaxhighlight lang=py  style="background:initial">
    <span class="n">Documentation</span> <span class="o">=</span> <span class="p">{</span>
id:= [a-zA-Z_]+[a-zA-Z_0-9]* //identifier
        <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>
//literals
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:= '@''"'[.]* '"'


    <span class="c1">//entity scopes are created in _roottable example:</span>
//operators
    <span class="c1">//&lt;uniquestring&gt;&lt;targetname or classname if no targetname&gt; = {}</span>
bassignops := '+=' | '/=' | '-=' | '*=' | '%=' | '<-' | '=' |
    <span class="n">_10dc_worldspawn</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
barithops := '+' | '-' |  '/' | '*' | '%'
    <span class="c1">//name of this scope is saved in entity&#39;s m_iszScriptId netprop</span>
bbitwops := '&' | '^' | '|' | '>>' | '<<' | '>>>'
    <span class="c1">//entity&#39;s RunScriptCode,RunScriptFile inputs create this scope if it doesn&#39;t exist and executes script in it</span>
blogicops := '||' | '&&'
    <span class="c1">//also scripts specified in entity&#39;s &#39;vscripts&#39; keyvalue executed in this scope</span>
bcompops := '!=' | '==' | '>=' | '<=' | '>' | '<=>'
<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>
ulogicops := '!'
<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>
urithops := '-'
<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>
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="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>
uassignops := '++' | '--'
<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>
//other?
<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>
explist := exp [',' explist]
<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>
args := id [',' args]
<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>
//expressions
<span class="n">urithops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;-&#39;</span>
derefexp := id | exp '.' id
<span class="n">ubitwops</span> <span class="p">:</span><span class="o">=</span> <span class="s1">&#39;~&#39;</span>
exp := '::' id | derefexp | functionexp
<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 := 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


<span class="o">//</span><span class="n">other</span><span class="err">?</span>
tslots := ( id ('='|':') exp | '[' exp ']' '=' exp | '"' [.]* '"' ':' exp) [',']
<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>
exp := '{' [tslots]* '}' //table constructor
<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>
exp := '[' [explist] ']' //array constructor
<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>
exp_cond := 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>
initexp := exp
condexp := exp
incexp := exp
functionexp := 'function' '(' args ')' stat
exp := derefexp '(' explist ')'


<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>
//statements
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]


<span class="n">exp_cond</span> <span class="p">:</span><span class="o">=</span> <span class="n">exp</span>
initz := id [= exp][',' initz]
<span class="n">initexp</span> <span class="p">:</span><span class="o">=</span> <span class="n">exp</span>
stat := 'local' initz
<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>
stat := 'const' id '=' IntegerLiteral | 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>
enumerations := ( id '=' Integer | FloatLiteral | StringLiteral ) [',']
<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>
stat:= 'enum' id '{' enumerations '}'
<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>
//funcname := id ['::' id]
<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>
functionstat := 'function' id ['::' id]* '(' args ')' [':' '(' args ')'] stat
stat := functionstat


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


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

Latest revision as of 16:19, 31 May 2025

Background - Rocket Raccoon.jpg
Nesciusprofileimage.jpg






















I just want to see my name in blue. You can leave now

personal notes:

regexen:

(?:(?<f>{{autolang(?<m>\s*\|\s*))|(?<s>^\s*\|\s*(?!#default|nt|id)(?<lang>\w\w(-\w\w)?\s*=))|(?<toi>(?<oi><onlyinclude>)(?<io><includeonly>))|(?<tio>(?<eio></includeonly>)(?<eoi></onlyinclude>)))

(?{f}{{#switch\: {{{lang|{{ROOTPAGENAME}}}}}$+{m}#default = :(?{s}\t| \u$+{lang}:(?{toi}\r\n$+{io}\r\n\r\n$+{oi}:$+{eoi}\r\n\r\n$+{eio}))
\[\[(?!#)(?:(?<c>:Category:(?<cl>.*?))|(?<a>Category:(?<al>.*?))|(?<h>:?Help:(?<hl>.*?))|(?<v>:?(?:Project|Valve[ _]Developer[ _]Community):(?<vl>.*?))|(?<s>:?Special:(?<sl>.*?))|(?<m>:?(?!File([ _]talk)?:|Image([ _]talk)?:|Media:|Template([ _]talk)?:|MediaWiki([ _]talk)?:|Talk:|Category[ _]talk:|Project[ _]talk:|Valve[ _]Developer[ _]Community[ _]talk:|Help[ _]talk:|User([ _]talk)?:|c:|commons:|Dictionary:|Google:|GoogleGroups:|IMDB:|M:|Meta:|Metawikipedia:|MW:|SdkBug:|SourceForge:|Steampowered:|W:|Wiki:|WikiBooks:|Wikipedia:|Wikiquote:|Wiktionary:|WP:)(?<ml>.*?)))\]\]

(?{c}{{LCategory|$+{cl}}}:(?{a}{{ACategory|$+{al}}}:(?{h}{{LHelp|$+{hl}}}:(?{v}{{LProject|$+{vl}}}:(?{s}{{LSpecial|$+{sl}}}:(?{m}{{L|$+{ml}}}:))))))

stuff:

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
            DirectorOptions = { ... } //3
            BaseScriptedDOTable = { ... } //added into ChallengeScript.DirectorOptions

            //these come from mapscripts {
            MapOptions = { ... } //added into ChallengeScript.DirectorOptions
            MapState = { ... } //added into ChallengeScript.MutationState
            MapSpawns = [] //entity groups to spawn

            SanitizeTable = { ... } //entities to remove
            // }

            ChallengeScript = { //modescripts executed in this scope
                MutationOptions = { ... } //added into DirectorOptions (below)
                MutationState = { ... }
                ModeSpawns = [] //added into MapSpawns

                DirectorOptions = { ... } //1
            }

            LocalScript = { //director's BeginScript input runs script in this scope
                DirectorOptions = { ... } //2
            }

            ScriptedDamageInfo = { ... } //used by AllowTakeDamage

            //entity group related
            EntityGroups = { ... }
            InstancedEntityGroup = { ... }
            ReplacementParms = { ... }
            UniqueTargetnames = { ... }

            //startbox related
            StartboxFloating_Info = { ... }
            StartboxCenter_Info = { ... }
            StartboxSpeedbump_Info = { ... }

            defaultClearout = { ... } //for clearout (used in holdout)
        }
    }

    g_ClearoutTable = { ... } //for clearout (used in holdout)

    //script_debug commands related
    ScriptDebugTraces = { ... }
    ScriptDebugTextFilters = { ... }

    //documentation
    _PublishedHelp = { ... }
    Documentation = {
        classes = { ... }
        instances = { ... }
        functions = { ... }
    }

    SPAWN_FLAGS = { ... } //entitygroup related, used in MapSpawns thingy

    //entity scopes are created in _roottable example:
    //<uniquestring><targetname or classname if no targetname> = {}
    _10dc_worldspawn = { ... }
    //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
}


Squirrel grammar

id:= [a-zA-Z_]+[a-zA-Z_0-9]* //identifier

//literals
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
bassignops := '+=' | '/=' | '-=' | '*=' | '%=' | '<-' | '=' |
barithops := '+' | '-' |  '/' | '*' | '%'
bbitwops := '&' | '^' | '|' | '>>' | '<<' | '>>>'
blogicops := '||' | '&&'
bcompops := '!=' | '==' | '>=' | '<=' | '>' | '<=>'

ulogicops := '!'
urithops := '-'
ubitwops := '~'
uassignops := '++' | '--'

//other?
explist := exp [',' explist]
args := id [',' args]

//expressions
derefexp := id | exp '.' id
exp := '::' id | derefexp | functionexp
exp := derefexp '=' exp
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) [',']
exp := '{' [tslots]* '}' //table constructor

exp := '[' [explist] ']' //array constructor

exp_cond := exp
initexp := exp
condexp := exp
incexp := exp
functionexp := 'function' '(' args ')' stat
exp := derefexp '(' explist ')'

//statements
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]
stat := 'local' initz

stat := 'const' id '=' IntegerLiteral | FloatLiteral | StringLiteral
enumerations := ( id '=' Integer | FloatLiteral | StringLiteral ) [',']
stat:= 'enum' id '{' enumerations '}'

//funcname := id ['::' id]
functionstat := 'function' id ['::' id]* '(' args ')' [':' '(' args ')'] stat
stat := functionstat

memberdecl := id '=' exp | '[' exp ']' '=' exp | functionstat | 'constructor' functionexp
stat := 'class' derefexp ['extends' derefexp] '{'
           [memberdecl]*
       '}'

stat := 'try' stat 'catch' '(' id ')' stat
stat := 'throw' [exp]

stat := exp