1<lexer>
  2  <config>
  3    <name>C3</name>
  4    <alias>c3</alias>
  5    <filename>*.c3</filename>
  6    <filename>*.c3i</filename>
  7    <filename>*.c3t</filename>
  8    <dot_all>true</dot_all>
  9  </config>
 10  <rules>
 11    <state name="vector">
 12      <rule pattern="&#62;\]">
 13        <token type="Punctuation" />
 14        <pop depth="1" />
 15      </rule>
 16      <rule pattern="&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
 17        <token type="LiteralStringDouble" />
 18      </rule>
 19      <rule pattern="&#39;(\\\\|\\&#39;|[^&#39;])*&#39;">
 20        <token type="LiteralStringChar" />
 21      </rule>
 22      <rule pattern="`(\\\\|\\`|[^`])*`">
 23        <token type="LiteralStringDouble" />
 24      </rule>
 25      <rule pattern="[+-]?(?:0(?:[xX][0-9a-fA-F](?:_*[0-9a-fA-F])*|[oO][0-7](?:_*[0-7])*|[bB][10](?:_*[10])*)|[0-9](?:_*[0-9])*(?:_*[eE][+-]?[0-9]+)?)(?:[iIuU](?:8|16|32|64|128)?|[fF](?:32|64)?|[uU][lL])?">
 26        <token type="LiteralNumber" />
 27      </rule>
 28      <rule pattern="\*">
 29        <token type="LiteralNumber" />
 30      </rule>
 31      <rule pattern="[$]{2}(C_INT_SIZE|C_SHORT_SIZE|C_LONG_SIZE|C_LONG_LONG_SIZE|C_CHAR_IS_SIGNED|JMP_BUF_SIZE|BUILD_HASH|BUILD_DATE|OS_TYPE|ARCH_TYPE|MAX_VECTOR_SIZE|REGISTER_SIZE |REGISTER_SIZE |COMPILER_LIBC_AVAILABLE|COMPILER_LIBC_AVAILABLE|COMPILER_OPT_LEVEL|PLATFORM_BIG_ENDIAN|PLATFORM_I128_SUPPORTED|PLATFORM_F16_SUPPORTED|PLATFORM_F128_SUPPORTED|REGISTER_SIZE|COMPILER_SAFE_MODE|DEBUG_SYMBOLS|BACKTRACE|LLVM_VERSION|BENCHMARKING|TESTING|PANIC_MSG|MEMORY_ENVIRONMENT|ADDRESS_SANITIZER|MEMORY_SANITIZER|THREAD_SANITIZER|LANGUAGE_DEV_VERSION|AUTHORS|AUTHOR_EMAILS|PROJECT_VERSION)">
 32        <token type="NameBuiltin" />
 33      </rule>
 34      <rule pattern="(\$alignof|\$assert|\$assignable|\$case|\$default|\$defined|\$echo|\$else|\$embed|\$endforeach|\$endfor|\$endif|\$endswitch|\$eval|\$evaltype|\$error|\$exec|\$extnameof|\$feature|\$foreach|\$for|\$if|\$include|\$is_const|\$nameof|\$offsetof|\$qnameof|\$sizeof|\$stringify|\$switch|\$typefrom|\$typeof|\$vacount|\$vatype|\$vaconst|\$vaarg|\$vaexpr|\$vasplat|alias|assert|asm|attrdef|bitstruct|break|case|catch|continue|default|defer|do|else|enum|extern|false|faultdef|foreach_r|foreach|for|fn|tlocal|if|inline|import|macro|module|nextcase|null|interface|return|static|struct|switch|true|try|typedef|union|while)(?!\w)">
 35        <token type="Keyword" />
 36      </rule>
 37      <rule pattern="[$#@]*[_a-z][a-z0-9A-Z_]*">
 38        <token type="NameOther" />
 39      </rule>
 40      <rule pattern="([$@]?(?:_)?[A-Z][a-z0-9A-Z_]*)(\s*)(\?)?">
 41        <bygroups>
 42          <token type="NameClass" />
 43          <token type="Text" />
 44          <token type="NameClass" />
 45        </bygroups>
 46      </rule>
 47      <rule pattern="[$]?(_)?[A-Z][0-9A-Z_]*">
 48        <token type="NameConstant" />
 49      </rule>
 50      <rule pattern="\[&#60;">
 51        <token type="Punctuation" />
 52        <push state="vector" />
 53      </rule>
 54      <rule pattern="\[">
 55        <token type="Punctuation" />
 56        <push state="index" />
 57      </rule>
 58      <rule pattern="(--|&#61;&#62;|&#62;&#61;|&#60;&#61;|(\||&amp;|\+){1,3}|\?:|\?\?|\.\.)|[:?&#61;&#60;&#62;%/\-\^!~]">
 59        <token type="Operator" />
 60      </rule>
 61      <rule pattern="[(){},;.!]">
 62        <token type="Punctuation" />
 63      </rule>
 64      <rule pattern="\s+">
 65        <token type="Text" />
 66      </rule>
 67    </state>
 68    <state name="index">
 69      <rule pattern="\]">
 70        <token type="Punctuation" />
 71        <pop depth="1" />
 72      </rule>
 73      <rule pattern="&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
 74        <token type="LiteralStringDouble" />
 75      </rule>
 76      <rule pattern="&#39;(\\\\|\\&#39;|[^&#39;])*&#39;">
 77        <token type="LiteralStringChar" />
 78      </rule>
 79      <rule pattern="`(\\\\|\\`|[^`])*`">
 80        <token type="LiteralStringDouble" />
 81      </rule>
 82      <rule pattern="[+-]?(?:0(?:[xX][0-9a-fA-F](?:_*[0-9a-fA-F])*|[oO][0-7](?:_*[0-7])*|[bB][10](?:_*[10])*)|[0-9](?:_*[0-9])*(?:_*[eE][+-]?[0-9]+)?)(?:[iIuU](?:8|16|32|64|128)?|[fF](?:32|64)?|[uU][lL])?">
 83        <token type="LiteralNumber" />
 84      </rule>
 85      <rule pattern="\*">
 86        <token type="LiteralNumber" />
 87      </rule>
 88      <rule pattern="[$]{2}(C_INT_SIZE|C_SHORT_SIZE|C_LONG_SIZE|C_LONG_LONG_SIZE|C_CHAR_IS_SIGNED|JMP_BUF_SIZE|BUILD_HASH|BUILD_DATE|OS_TYPE|ARCH_TYPE|MAX_VECTOR_SIZE|REGISTER_SIZE |REGISTER_SIZE |COMPILER_LIBC_AVAILABLE|COMPILER_LIBC_AVAILABLE|COMPILER_OPT_LEVEL|PLATFORM_BIG_ENDIAN|PLATFORM_I128_SUPPORTED|PLATFORM_F16_SUPPORTED|PLATFORM_F128_SUPPORTED|REGISTER_SIZE|COMPILER_SAFE_MODE|DEBUG_SYMBOLS|BACKTRACE|LLVM_VERSION|BENCHMARKING|TESTING|PANIC_MSG|MEMORY_ENVIRONMENT|ADDRESS_SANITIZER|MEMORY_SANITIZER|THREAD_SANITIZER|LANGUAGE_DEV_VERSION|AUTHORS|AUTHOR_EMAILS|PROJECT_VERSION)">
 89        <token type="NameBuiltin" />
 90      </rule>
 91      <rule pattern="(\$alignof|\$assert|\$assignable|\$case|\$default|\$defined|\$echo|\$else|\$embed|\$endforeach|\$endfor|\$endif|\$endswitch|\$eval|\$evaltype|\$error|\$exec|\$extnameof|\$feature|\$foreach|\$for|\$if|\$include|\$is_const|\$nameof|\$offsetof|\$qnameof|\$sizeof|\$stringify|\$switch|\$typefrom|\$typeof|\$vacount|\$vatype|\$vaconst|\$vaarg|\$vaexpr|\$vasplat|alias|assert|asm|attrdef|bitstruct|break|case|catch|continue|default|defer|do|else|enum|extern|false|faultdef|foreach_r|foreach|for|fn|tlocal|if|inline|import|macro|module|nextcase|null|interface|return|static|struct|switch|true|try|typedef|union|while)(?!\w)">
 92        <token type="Keyword" />
 93      </rule>
 94      <rule pattern="[$#@]*[_a-z][a-z0-9A-Z_]*">
 95        <token type="NameOther" />
 96      </rule>
 97      <rule pattern="([$@]?(?:_)?[A-Z][a-z0-9A-Z_]*)(\s*)(\?)?">
 98        <bygroups>
 99          <token type="NameClass" />
100          <token type="Text" />
101          <token type="NameClass" />
102        </bygroups>
103      </rule>
104      <rule pattern="[$]?(_)?[A-Z][0-9A-Z_]*">
105        <token type="NameConstant" />
106      </rule>
107      <rule pattern="\[&#60;">
108        <token type="Punctuation" />
109        <push state="vector" />
110      </rule>
111      <rule pattern="\[">
112        <token type="Punctuation" />
113        <push state="index" />
114      </rule>
115      <rule pattern="(--|&#61;&#62;|&#62;&#61;|&#60;&#61;|(\||&amp;|\+){1,3}|\?:|\?\?|\.\.)|[:?&#61;&#60;&#62;%/\-\^!~]">
116        <token type="Operator" />
117      </rule>
118      <rule pattern="[(){},;.!]">
119        <token type="Punctuation" />
120      </rule>
121      <rule pattern="\s+">
122        <token type="Text" />
123      </rule>
124    </state>
125    <state name="function_type">
126      <rule pattern="void|bool|char|double|float|float16|bfloat|int128|ichar|int|iptr|isz|long|short|uint128|uint|ulong|uptr|ushort|usz|float128|any|fault|typeid">
127        <token type="NameBuiltin" />
128      </rule>
129      <rule pattern="\[&#60;">
130        <token type="Punctuation" />
131        <push state="vector" />
132      </rule>
133      <rule pattern="\[">
134        <token type="Punctuation" />
135        <push state="index" />
136      </rule>
137      <rule pattern="\s*\(">
138        <token type="Punctuation" />
139        <pop depth="1" />
140      </rule>
141      <rule pattern="\.">
142        <token type="Punctuation" />
143      </rule>
144      <rule pattern="\s*(\*)">
145        <token type="Operator" />
146      </rule>
147      <rule pattern="[$@]?(_)?[A-Z][a-zA-Z_0-9]*">
148        <token type="NameClass" />
149      </rule>
150      <rule pattern="\s*\?">
151        <token type="NameClass" />
152      </rule>
153      <rule pattern="\s+">
154        <token type="Text" />
155        <push state="function_name" />
156      </rule>
157      <rule pattern="[@]?[_a-z][a-zA-Z_0-9]*">
158        <token type="NameFunction" />
159        <pop depth="1" />
160      </rule>
161      <rule pattern="[$]?[_a-z][a-zA-Z_0-9]*">
162        <token type="Keyword" />
163        <pop depth="1" />
164      </rule>
165    </state>
166    <state name="function_name">
167      <rule pattern="(void|bool|char|double|float|float16|bfloat|int128|ichar|int|iptr|isz|long|short|uint128|uint|ulong|uptr|ushort|usz|float128|any|fault|typeid)(?![a-zA-Z_0-9])">
168        <token type="NameBuiltin" />
169      </rule>
170      <rule pattern="[@]?[_a-z][a-zA-Z_0-9]*">
171        <token type="NameFunction" />
172        <pop depth="2" />
173      </rule>
174      <rule pattern="([$@]?(?:_)?[A-Z][a-zA-Z_0-9]*)">
175        <token type="NameClass" />
176      </rule>
177      <rule pattern="\.|\s*(\*)">
178        <token type="Punctuation" />
179      </rule>
180      <rule pattern="\[&#60;">
181        <token type="Punctuation" />
182        <push state="vector" />
183      </rule>
184      <rule pattern="\[">
185        <token type="Punctuation" />
186        <push state="index" />
187      </rule>
188      <rule pattern="\(">
189        <token type="Punctuation" />
190        <pop depth="1" />
191      </rule>
192    </state>
193    <state name="path_segment">
194      <rule pattern="[_a-z][a-z0-9_]*">
195        <token type="NameNamespace" />
196      </rule>
197      <rule pattern="(::|,)">
198        <token type="Punctuation" />
199      </rule>
200      <rule pattern="&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
201        <token type="LiteralStringDouble" />
202      </rule>
203      <rule pattern="&#39;(\\\\|\\&#39;|[^&#39;])*&#39;">
204        <token type="LiteralStringChar" />
205      </rule>
206      <rule pattern="`(\\\\|\\`|[^`])*`">
207        <token type="LiteralStringDouble" />
208      </rule>
209      <rule pattern="(\s*)(\{)(\s*)([$@]?(?:_)?[A-Z][a-zA-Z_0-9]*)(?:(\s*)(,)(\s*)([$@]?(?:_)?[A-Z][a-zA-Z_0-9]*))*(\s*)(\})">
210        <bygroups>
211          <token type="Text" />
212          <token type="Punctuation" />
213          <token type="Text" />
214          <token type="NameClass" />
215          <token type="Text" />
216          <token type="Punctuation" />
217          <token type="Text" />
218          <token type="NameClass" />
219          <token type="Text" />
220          <token type="Punctuation" />
221        </bygroups>
222      </rule>
223      <rule pattern="@align|@benchmark|@bigendian|@builtin|@callconv|@compact|@const|@deprecated|@dynamic|@export|@extern|@finalizer|@format|@if|@inline|@init|@link|@littleendian|@local|@maydiscard|@naked|@noalias|@nodiscard|@noinit|@noinline|@nopadding|@norecurse|@noreturn|@nosanitize|@nostrip|@obfuscate|@operator|@operator_r|@operator_s|@optional|@overlap|@packed|@private|@public|@pure|@reflect|@safemacro|@section|@tag|@test|@unused|@used|@wasm|@weak|@winmain">
224        <token type="NameAttribute" />
225      </rule>
226      <rule pattern="(([\^&amp;|+\-*/%=!]|(&#60;|&#62;){2})=|--|&#61;&#62;|&#62;&#61;|&#60;&#61;|(\||&amp;|\+){1,3}|\?:|\?\?)|[?&#61;&#60;&#62;%/\-\^*!~]">
227        <token type="Operator" />
228      </rule>
229      <rule pattern="[(){}[\],*:.!]">
230        <token type="Punctuation" />
231      </rule>
232      <rule pattern="(\$alignof|\$assert|\$assignable|\$case|\$default|\$defined|\$echo|\$else|\$embed|\$endforeach|\$endfor|\$endif|\$endswitch|\$eval|\$evaltype|\$error|\$exec|\$extnameof|\$feature|\$foreach|\$for|\$if|\$include|\$is_const|\$nameof|\$offsetof|\$qnameof|\$sizeof|\$stringify|\$switch|\$typefrom|\$typeof|\$vacount|\$vatype|\$vaconst|\$vaarg|\$vaexpr|\$vasplat|alias|assert|asm|attrdef|bitstruct|break|case|catch|continue|default|defer|do|else|enum|extern|false|faultdef|foreach_r|foreach|for|fn|tlocal|if|inline|import|macro|module|nextcase|null|interface|return|static|struct|switch|true|try|typedef|union|while)(?!\w)">
233        <token type="Keyword" />
234      </rule>
235      <rule pattern="([$#@]*[_a-z][a-z0-9A-Z_]*)(\s*)(\()">
236        <bygroups>
237          <token type="NameFunction" />
238          <token type="Text" />
239          <token type="Punctuation" />
240        </bygroups>
241      </rule>
242      <rule pattern="[$#@]*[_a-z][a-z0-9A-Z_]*">
243        <token type="NameOther" />
244      </rule>
245      <rule pattern="([$@]?(?:_)?[A-Z][a-z0-9A-Z_]*)(\s*)(\?)?">
246        <bygroups>
247          <token type="NameClass" />
248          <token type="Text" />
249          <token type="NameClass" />
250        </bygroups>
251      </rule>
252      <rule pattern="[$]?(_)?[A-Z][0-9A-Z_]*">
253        <token type="NameConstant" />
254      </rule>
255      <rule pattern="\[&#60;">
256        <token type="Punctuation" />
257        <push state="vector" />
258      </rule>
259      <rule pattern="[;]">
260        <token type="Punctuation" />
261        <pop depth="1" />
262      </rule>
263      <rule pattern="\s+">
264        <token type="Text" />
265      </rule>
266    </state>
267    <state name="root">
268      <rule pattern="//.*?\n">
269        <token type="CommentSingle"/>
270      </rule>
271      <rule pattern="/\*.*?\*/">
272        <token type="CommentMultiline"/>
273      </rule>
274      <rule pattern="&#60;\*.*?\*&#62;">
275        <token type="CommentMultiline"/>
276      </rule>
277      <rule pattern="(module|import)(\s+)">
278        <bygroups>
279          <token type="Keyword" />
280          <token type="Text" />
281        </bygroups>
282        <push state="path_segment" />
283      </rule>
284      <rule pattern="(extern)?(fn|macro)(\s+)">
285        <bygroups>
286          <token type="Keyword" />
287          <token type="Keyword" />
288          <token type="Text" />
289        </bygroups>
290        <push state="function_type" />
291      </rule>
292      <rule pattern="[$]{2}(C_INT_SIZE|C_SHORT_SIZE|C_LONG_SIZE|C_LONG_LONG_SIZE|C_CHAR_IS_SIGNED|JMP_BUF_SIZE|BUILD_HASH|BUILD_DATE|OS_TYPE|ARCH_TYPE|MAX_VECTOR_SIZE|REGISTER_SIZE |REGISTER_SIZE |COMPILER_LIBC_AVAILABLE|COMPILER_LIBC_AVAILABLE|COMPILER_OPT_LEVEL|PLATFORM_BIG_ENDIAN|PLATFORM_I128_SUPPORTED|PLATFORM_F16_SUPPORTED|PLATFORM_F128_SUPPORTED|REGISTER_SIZE|COMPILER_SAFE_MODE|DEBUG_SYMBOLS|BACKTRACE|LLVM_VERSION|BENCHMARKING|TESTING|PANIC_MSG|MEMORY_ENVIRONMENT|ADDRESS_SANITIZER|MEMORY_SANITIZER|THREAD_SANITIZER|LANGUAGE_DEV_VERSION|AUTHORS|AUTHOR_EMAILS|PROJECT_VERSION)">
293        <token type="NameBuiltin" />
294      </rule>
295      <rule pattern="(void|bool|char|double|float|float16|bfloat|int128|ichar|int|iptr|isz|long|short|uint128|uint|ulong|uptr|ushort|usz|float128|any|fault|typeid)(\s*)(\?)?">
296        <bygroups>
297          <token type="NameBuiltin" />
298          <token type="Text" />
299          <token type="NameClass" />
300        </bygroups>
301      </rule>
302      <rule pattern="(\$alignof|\$assert|\$assignable|\$case|\$default|\$defined|\$echo|\$else|\$embed|\$endforeach|\$endfor|\$endif|\$endswitch|\$eval|\$evaltype|\$error|\$exec|\$extnameof|\$feature|\$foreach|\$for|\$if|\$include|\$is_const|\$nameof|\$offsetof|\$qnameof|\$sizeof|\$stringify|\$switch|\$typefrom|\$typeof|\$vacount|\$vatype|\$vaconst|\$vaarg|\$vaexpr|\$vasplat|alias|assert|asm|attrdef|bitstruct|break|case|catch|continue|default|defer|do|else|enum|extern|false|faultdef|foreach_r|foreach|for|fn|tlocal|if|inline|import|macro|module|nextcase|null|interface|return|static|struct|switch|true|try|typedef|union|while)(?!\w)">
303        <token type="Keyword" />
304      </rule>
305      <rule pattern="var|const">
306        <token type="KeywordDeclaration" />
307      </rule>
308      <rule pattern="\A#! ?/.*?\n">
309        <token type="CommentHashbang" />
310      </rule>
311      <rule pattern="&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
312        <token type="LiteralStringDouble" />
313      </rule>
314      <rule pattern="&#39;(\\\\|\\&#39;|[^&#39;])*&#39;">
315        <token type="LiteralStringChar" />
316      </rule>
317      <rule pattern="`(\\\\|\\`|[^`])*`">
318        <token type="LiteralStringDouble" />
319      </rule>
320      <rule pattern="([_a-z][a-z0-9_]*)(::)">
321        <bygroups>
322          <token type="NameNamespace" />
323          <token type="Punctuation" />
324        </bygroups>
325      </rule>
326      <rule pattern="[+-]?(?:0(?:[xX][0-9a-fA-F](?:_*[0-9a-fA-F])*|[oO][0-7](?:_*[0-7])*|[bB][10](?:_*[10])*)|[0-9](?:_*[0-9])*(?:_*[eE][+-]?[0-9]+)?)(?:[iIuU](?:8|16|32|64|128)?|[fF](?:32|64)?|[uU][lL])?">
327        <token type="LiteralNumber" />
328      </rule>
329      <rule pattern="@align|@benchmark|@bigendian|@builtin|@callconv|@compact|@const|@deprecated|@dynamic|@export|@extern|@finalizer|@format|@if|@inline|@init|@link|@littleendian|@local|@maydiscard|@naked|@noalias|@nodiscard|@noinit|@noinline|@nopadding|@norecurse|@noreturn|@nosanitize|@nostrip|@obfuscate|@operator|@operator_r|@operator_s|@optional|@overlap|@packed|@private|@public|@pure|@reflect|@safemacro|@section|@tag|@test|@unused|@used|@wasm|@weak|@winmain">
330        <token type="NameAttribute" />
331      </rule>
332      <rule pattern="\$\$abs|\$\$any_make|\$\$atomic_load|\$\$atomic_store|\$\$atomic_fetch_exchange|\$\$atomic_fetch_add|\$\$atomic_fetch_sub|\$\$atomic_fetch_and|\$\$atomic_fetch_nand|\$\$atomic_fetch_or|\$\$atomic_fetch_xor|\$\$atomic_fetch_max|\$\$atomic_fetch_min|\$\$atomic_fetch_inc_wrap|\$\$atomic_fetch_dec_wrap|\$\$bitreverse|\$\$breakpoint|\$\$bswap|\$\$ceil|\$\$compare_exchange|\$\$copysign|\$\$cos|\$\$clz|\$\$ctz|\$\$add|\$\$div|\$\$mod|\$\$mul|\$\$neg|\$\$sub|\$\$exp|\$\$exp2|\$\$expect|\$\$expect_with_probability|\$\$floor|\$\$fma|\$\$fmuladd|\$\$frameaddress|\$\$fshl|\$\$fshr|\$\$gather|\$\$get_rounding_mode|\$\$log|\$\$log10|\$\$log2|\$\$masked_load|\$\$masked_store|\$\$max|\$\$memcpy|\$\$memcpy_inline|\$\$memmove|\$\$memset|\$\$memset_inline|\$\$min|\$\$nearbyint|\$\$overflow_add|\$\$overflow_mul|\$\$overflow_sub|\$\$popcount|\$\$pow|\$\$pow_int|\$\$prefetch|\$\$reduce_add|\$\$reduce_and|\$\$reduce_fadd|\$\$reduce_fmul|\$\$reduce_max|\$\$reduce_min|\$\$reduce_mul|\$\$reduce_or|\$\$reduce_xor|\$\$reverse|\$\$returnaddress|\$\$rint|\$\$round|\$\$roundeven|\$\$sat_add|\$\$sat_shl|\$\$sat_sub|\$\$scatter|\$\$select|\$\$set_rounding_mode|\$\$str_hash|\$\$str_upper|\$\$str_lower|\$\$str_find|\$\$swizzle|\$\$swizzle2|\$\$sin|\$\$sqrt|\$\$syscall|\$\$sysclock|\$\$trap|\$\$trunc|\$\$unaligned_load|\$\$unaligned_store|\$\$unreachable|\$\$veccomplt|\$\$veccomple|\$\$veccompgt|\$\$veccompge|\$\$veccompeq|\$\$veccompne|\$\$volatile_load|\$\$volatile_store|\$\$wasm_memory_size|\$\$wasm_memory_grow|\$\$wstr16|\$\$wstr32|\$\$DATE|\$\$FILE|\$\$FILEPATH|\$\$FUNC|\$\$FUNCTION|\$\$LINE|\$\$LINE_RAW|\$\$MODULE|\$\$BENCHMARK_NAMES|\$\$BENCHMARK_FNS|\$\$TEST_NAMES|\$\$TEST_FNS|\$\$TIME">
333        <token type="NameBuiltin" />
334      </rule>
335      <rule pattern="([$#@]*[_a-z][a-z0-9A-Z_]*)(\s*)(\()">
336        <bygroups>
337          <token type="NameFunction" />
338          <token type="Text" />
339          <token type="Punctuation" />
340        </bygroups>
341      </rule>
342      <rule pattern="[$#@]*[_a-z][a-z0-9A-Z_]*">
343        <token type="NameOther" />
344      </rule>
345      <rule pattern="([$@]?(?:_)?[A-Z][a-z0-9A-Z_]*)(\s*)(\?)?">
346        <bygroups>
347          <token type="NameClass" />
348          <token type="Text" />
349          <token type="NameClass" />
350        </bygroups>
351      </rule>
352      <rule pattern="[$]?(_)?[A-Z][0-9A-Z_]*">
353        <token type="NameConstant" />
354      </rule>
355      <rule pattern="\[&#60;">
356        <token type="Punctuation" />
357        <push state="vector" />
358      </rule>
359      <rule pattern="\[">
360        <token type="Punctuation" />
361        <push state="index" />
362      </rule>
363      <rule pattern="(([\^&amp;|+\-*/%=!]|(&#60;|&#62;){2})=|--|&#61;&#62;|&#62;&#61;|&#60;&#61;|(\||&amp;|\+){1,3}|\?:|\?\?)|[?&#61;&#60;&#62;%/\-\^*!~]">
364        <token type="Operator" />
365      </rule>
366      <rule pattern="[(){},;*:.!]">
367        <token type="Punctuation" />
368      </rule>
369      <rule pattern="\s+">
370        <token type="Text" />
371      </rule>
372    </state>
373  </rules>
374</lexer>