1. <lexer>
    
  2.   <config>
    
  3.     <name>ActionScript 3</name>
    
  4.     <alias>as3</alias>
    
  5.     <alias>actionscript3</alias>
    
  6.     <filename>*.as</filename>
    
  7.     <mime_type>application/x-actionscript3</mime_type>
    
  8.     <mime_type>text/x-actionscript3</mime_type>
    
  9.     <mime_type>text/actionscript3</mime_type>
    
  10.     <dot_all>true</dot_all>
    
  11.   </config>
    
  12.   <rules>
    
  13.     <state name="funcparams">
    
  14.       <rule pattern="\s+">
    
  15.         <token type="Text"/>
    
  16.       </rule>
    
  17.       <rule pattern="(\s*)(\.\.\.)?([$a-zA-Z_]\w*)(\s*)(:)(\s*)([$a-zA-Z_]\w*(?:\.&lt;\w+&gt;)?|\*)(\s*)">
    
  18.         <bygroups>
    
  19.           <token type="Text"/>
    
  20.           <token type="Punctuation"/>
    
  21.           <token type="Name"/>
    
  22.           <token type="Text"/>
    
  23.           <token type="Operator"/>
    
  24.           <token type="Text"/>
    
  25.           <token type="KeywordType"/>
    
  26.           <token type="Text"/>
    
  27.         </bygroups>
    
  28.         <push state="defval"/>
    
  29.       </rule>
    
  30.       <rule pattern="\)">
    
  31.         <token type="Operator"/>
    
  32.         <push state="type"/>
    
  33.       </rule>
    
  34.     </state>
    
  35.     <state name="type">
    
  36.       <rule pattern="(\s*)(:)(\s*)([$a-zA-Z_]\w*(?:\.&lt;\w+&gt;)?|\*)">
    
  37.         <bygroups>
    
  38.           <token type="Text"/>
    
  39.           <token type="Operator"/>
    
  40.           <token type="Text"/>
    
  41.           <token type="KeywordType"/>
    
  42.         </bygroups>
    
  43.         <pop depth="2"/>
    
  44.       </rule>
    
  45.       <rule pattern="\s+">
    
  46.         <token type="Text"/>
    
  47.         <pop depth="2"/>
    
  48.       </rule>
    
  49.       <rule>
    
  50.         <pop depth="2"/>
    
  51.       </rule>
    
  52.     </state>
    
  53.     <state name="defval">
    
  54.       <rule pattern="(=)(\s*)([^(),]+)(\s*)(,?)">
    
  55.         <bygroups>
    
  56.           <token type="Operator"/>
    
  57.           <token type="Text"/>
    
  58.           <usingself state="root"/>
    
  59.           <token type="Text"/>
    
  60.           <token type="Operator"/>
    
  61.         </bygroups>
    
  62.         <pop depth="1"/>
    
  63.       </rule>
    
  64.       <rule pattern=",">
    
  65.         <token type="Operator"/>
    
  66.         <pop depth="1"/>
    
  67.       </rule>
    
  68.       <rule>
    
  69.         <pop depth="1"/>
    
  70.       </rule>
    
  71.     </state>
    
  72.     <state name="root">
    
  73.       <rule pattern="\s+">
    
  74.         <token type="Text"/>
    
  75.       </rule>
    
  76.       <rule pattern="(function\s+)([$a-zA-Z_]\w*)(\s*)(\()">
    
  77.         <bygroups>
    
  78.           <token type="KeywordDeclaration"/>
    
  79.           <token type="NameFunction"/>
    
  80.           <token type="Text"/>
    
  81.           <token type="Operator"/>
    
  82.         </bygroups>
    
  83.         <push state="funcparams"/>
    
  84.       </rule>
    
  85.       <rule pattern="(var|const)(\s+)([$a-zA-Z_]\w*)(\s*)(:)(\s*)([$a-zA-Z_]\w*(?:\.&lt;\w+&gt;)?)">
    
  86.         <bygroups>
    
  87.           <token type="KeywordDeclaration"/>
    
  88.           <token type="Text"/>
    
  89.           <token type="Name"/>
    
  90.           <token type="Text"/>
    
  91.           <token type="Punctuation"/>
    
  92.           <token type="Text"/>
    
  93.           <token type="KeywordType"/>
    
  94.         </bygroups>
    
  95.       </rule>
    
  96.       <rule pattern="(import|package)(\s+)((?:[$a-zA-Z_]\w*|\.)+)(\s*)">
    
  97.         <bygroups>
    
  98.           <token type="Keyword"/>
    
  99.           <token type="Text"/>
    
  100.           <token type="NameNamespace"/>
    
  101.           <token type="Text"/>
    
  102.         </bygroups>
    
  103.       </rule>
    
  104.       <rule pattern="(new)(\s+)([$a-zA-Z_]\w*(?:\.&lt;\w+&gt;)?)(\s*)(\()">
    
  105.         <bygroups>
    
  106.           <token type="Keyword"/>
    
  107.           <token type="Text"/>
    
  108.           <token type="KeywordType"/>
    
  109.           <token type="Text"/>
    
  110.           <token type="Operator"/>
    
  111.         </bygroups>
    
  112.       </rule>
    
  113.       <rule pattern="//.*?\n">
    
  114.         <token type="CommentSingle"/>
    
  115.       </rule>
    
  116.       <rule pattern="/\*.*?\*/">
    
  117.         <token type="CommentMultiline"/>
    
  118.       </rule>
    
  119.       <rule pattern="/(\\\\|\\/|[^\n])*/[gisx]*">
    
  120.         <token type="LiteralStringRegex"/>
    
  121.       </rule>
    
  122.       <rule pattern="(\.)([$a-zA-Z_]\w*)">
    
  123.         <bygroups>
    
  124.           <token type="Operator"/>
    
  125.           <token type="NameAttribute"/>
    
  126.         </bygroups>
    
  127.       </rule>
    
  128.       <rule pattern="(case|default|for|each|in|while|do|break|return|continue|if|else|throw|try|catch|with|new|typeof|arguments|instanceof|this|switch|import|include|as|is)\b">
    
  129.         <token type="Keyword"/>
    
  130.       </rule>
    
  131.       <rule pattern="(class|public|final|internal|native|override|private|protected|static|import|extends|implements|interface|intrinsic|return|super|dynamic|function|const|get|namespace|package|set)\b">
    
  132.         <token type="KeywordDeclaration"/>
    
  133.       </rule>
    
  134.       <rule pattern="(true|false|null|NaN|Infinity|-Infinity|undefined|void)\b">
    
  135.         <token type="KeywordConstant"/>
    
  136.       </rule>
    
  137.       <rule pattern="(decodeURI|decodeURIComponent|encodeURI|escape|eval|isFinite|isNaN|isXMLName|clearInterval|fscommand|getTimer|getURL|getVersion|isFinite|parseFloat|parseInt|setInterval|trace|updateAfterEvent|unescape)\b">
    
  138.         <token type="NameFunction"/>
    
  139.       </rule>
    
  140.       <rule pattern="[$a-zA-Z_]\w*">
    
  141.         <token type="Name"/>
    
  142.       </rule>
    
  143.       <rule pattern="[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?">
    
  144.         <token type="LiteralNumberFloat"/>
    
  145.       </rule>
    
  146.       <rule pattern="0x[0-9a-f]+">
    
  147.         <token type="LiteralNumberHex"/>
    
  148.       </rule>
    
  149.       <rule pattern="[0-9]+">
    
  150.         <token type="LiteralNumberInteger"/>
    
  151.       </rule>
    
  152.       <rule pattern="&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
    
  153.         <token type="LiteralStringDouble"/>
    
  154.       </rule>
    
  155.       <rule pattern="&#39;(\\\\|\\&#39;|[^&#39;])*&#39;">
    
  156.         <token type="LiteralStringSingle"/>
    
  157.       </rule>
    
  158.       <rule pattern="[~^*!%&amp;&lt;&gt;|+=:;,/?\\{}\[\]().-]+">
    
  159.         <token type="Operator"/>
    
  160.       </rule>
    
  161.     </state>
    
  162.   </rules>
    
  163. </lexer>