Skip to content

Commit c688d92

Browse files
authored
feat: add support for C3 (#1148)
I added support for [C3](https://c3-lang.org/). The lexer might not be well optimized or perfect yet, I just know that I tested it on the entire stdlib and there were no errors. (There might be other errors I did not notice)
1 parent ba111b7 commit c688d92

File tree

3 files changed

+608
-0
lines changed

3 files changed

+608
-0
lines changed

lexers/embedded/c3.xml

Lines changed: 374 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,374 @@
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>

0 commit comments

Comments
 (0)