actionscript_3.xml

  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>