Skip to content

Commit 19fb9b7

Browse files
authored
micro editor: Update C3 syntax rules in c3.yaml (#43)
c3 version: 0.7.11
1 parent 884fb99 commit 19fb9b7

1 file changed

Lines changed: 66 additions & 26 deletions

File tree

micro/c3.yaml

Lines changed: 66 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,99 @@
11
filetype: c3
22

33
detect:
4-
filename: "(\\.(c3)$)"
4+
filename: "(\\.(c3|c3i|c3t)$)"
55

66
rules:
77
- identifier: "\\b[A-Z_][0-9A-Z_]+\\b"
8-
- type: "\\b[A-Z][A-Za-z_]+\\b"
9-
- identifier.constant: "\\b[A-Z_]+\\b"
10-
- identifer: "\\$[A-Za-z_][0-9A-Za-z_]+"
11-
- type: "\\b(void|bool|char|double|float|float16|bfloat|int128|ichar|int|iptr|isz|long|short|uint128|uint|ulong|uptr|ushort|usz|float128|any|anyfault|String)\\b"
12-
- type: "\\b(CChar|CShort|CUShort|CInt|CUInt|CLong|CULong|CLongLong|CULongLong|CLongDouble)\\b"
13-
- statement: "\\b(typeid|assert|asm|bitstruct|break|case|catch|const|continue|def|default|defer|distinct|do|else|enum|extern|fault|for|foreach|foreach_r|fn|tlocal|if|inline|import|macro|module|nextcase|null|interface|return|static|struct|switch|try|union|var|while)\\b"
14-
- statement: "(\\$\\$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|\\$\\$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|\\$\\$DATE|\\$\\$FILE|\\$\\$FILEPATH|\\$\\$FUNC|\\$\\$FUNCTION|\\$\\$LINE|\\$\\$LINE_RAW|\\$\\$MODULE|\\$\\$BENCHMARK_NAMES|\\$\\$BENCHMARK_FNS|\\$\\$TEST_NAMES|\\$\\$TEST_FNS|\\$\\$TIME)"
15-
- statement: "(\\$\\$expect_with_probability|\\$\\$expect)"
16-
- preproc: "(\\$alignof|\\$and|\\$append|\\$assert|\\$assignable|\\$case|\\$concat|\\$default|\\$defined|\\$echo|\\$else|\\$embed|\\$endfor|\\$endforeach|\\$endif|\\$endswitch|\\$eval|\\$evaltype|\\$error|\\$exec|\\$extnameof|\\$feature|\\$for|\\$foreach|\\$if|\\$include|\\$is_const|\\$nameof|\\$offsetof|\\$or|\\$qnameof|\\$sizeof|\\$stringify|\\$switch|\\$typefrom|\\$typeof|\\$vacount|\\$vatype|\\$vaconst|\\$varef|\\$vaarg|\\$vaexpr|\\$vasplat)"
17-
- preproc: "(@align|@benchmark|@bigendian|@builtin|@callconv|@compact|@const|@deprecated|@dynamic|@export|@extern|@finalizer|@if|@inline|@init|@link|@littleendian|@local|@maydiscard|@naked|@noalias|@nodiscard|@noinit|@noinline|@nopadding|@noreturn|@nostrip|@obfuscate|@operator|@optional|@overlap|@packed|@private|@public|@pure|@reflect|@safemacro|@section|@test|@unused|@used|@wasm|@weak|@winmain)"
18-
- symbol.operator: "[-+*/%=<>.:;,~&|^!?]\\b"
19-
- symbol.brackets: "[(){}]|\\[|\\]"
20-
21-
# Integer Constants
22-
- constant.number: "(\\b([0-9_]+|0x[0-9A-Fa-f_]+|0b[01_]+)\\b)"
23-
# Decimal Floating Constants
24-
- constant.number: "(\\b([0-9_]+.[0-9]+)\\b)"
25-
26-
- constant.bool: "(\\b(true|false|null)\\b)"
8+
- type: "\\b[A-Z][A-Za-z_0-9]+\\b"
9+
- identifier.constant: "\\b[A-Z_][A-Z0-9_]*\\b"
10+
- identifier: "\\$[A-Za-z_][0-9A-Za-z_]*"
2711

12+
# Built-in types
13+
- type: "\\b(void|any|bool|char|double|float|float16|bfloat|int128|ichar|int|iptr|isz|long|short|uint128|uint|ulong|uptr|ushort|usz|float128|any|String|fault|sz|typeid)\\b"
14+
15+
# Keywords
16+
- statement: "\\b(alias|asm|assert|attrdef|bitstruct|break|case|catch|const|continue|default|defer|do|else|enum|extern|false|faultdef|fn|for|foreach|foreach_r|if|import|inline|interface|macro|module|nextcase|null|return|struct|static|switch|tlocal|true|try|typedef|union|var|while|constdef|lengthof)\\b"
17+
18+
# $$ builtins
19+
- statement: "(\\$\\$BENCHMARK_FNS|\\$\\$BENCHMARK_NAMES|\\$\\$TEST_FNS|\\$\\$TEST_NAMES|\\$\\$abs|\\$\\$add|\\$\\$any_make|\\$\\$atomic_fetch_add|\\$\\$atomic_fetch_and|\\$\\$atomic_fetch_dec_wrap|\\$\\$atomic_fetch_exchange|\\$\\$atomic_fetch_inc_wrap|\\$\\$atomic_fetch_max|\\$\\$atomic_fetch_min|\\$\\$atomic_fetch_nand|\\$\\$atomic_fetch_or|\\$\\$atomic_fetch_sub|\\$\\$atomic_fetch_xor|\\$\\$atomic_load|\\$\\$atomic_store|\\$\\$bitreverse|\\$\\$breakpoint|\\$\\$bswap|\\$\\$ceil|\\$\\$clz|\\$\\$compare_exchange|\\$\\$copysign|\\$\\$cos|\\$\\$ctz|\\$\\$DATE|\\$\\$div|\\$\\$exp|\\$\\$exp2|\\$\\$expect|\\$\\$expect_with_probability|\\$\\$fabs|\\$\\$FILE|\\$\\$FILEPATH|\\$\\$floor|\\$\\$fma|\\$\\$fmuladd|\\$\\$frameaddress|\\$\\$fshl|\\$\\$fshr|\\$\\$FUNC|\\$\\$FUNCTION|\\$\\$gather|\\$\\$get_rounding_mode|\\$\\$int_to_mask|\\$\\$LINE|\\$\\$LINE_RAW|\\$\\$log|\\$\\$log10|\\$\\$log2|\\$\\$masked_load|\\$\\$masked_store|\\$\\$max|\\$\\$memcpy|\\$\\$memcpy_inline|\\$\\$memmove|\\$\\$memset|\\$\\$memset_inline|\\$\\$min|\\$\\$MODULE|\\$\\$mask_to_int|\\$\\$nearbyint|\\$\\$neg|\\$\\$overflow_add|\\$\\$overflow_mul|\\$\\$overflow_sub|\\$\\$popcount|\\$\\$pow|\\$\\$pow_int|\\$\\$prefetch|\\$\\$PRERELEASE|\\$\\$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|\\$\\$shufflevector|\\$\\$sin|\\$\\$sqrt|\\$\\$stacktrace|\\$\\$str_find|\\$\\$str_hash|\\$\\$str_lower|\\$\\$str_pascalcase|\\$\\$str_replace|\\$\\$str_snakecase|\\$\\$str_upper|\\$\\$swizzle|\\$\\$swizzle2|\\$\\$syscall|\\$\\$sysclock|\\$\\$TIME|\\$\\$trap|\\$\\$trunc|\\$\\$unaligned_load|\\$\\$unaligned_store|\\$\\$unreachable|\\$\\$veccompeq|\\$\\$veccompge|\\$\\$veccompgt|\\$\\$veccomple|\\$\\$veccomplt|\\$\\$veccompne|\\$\\$VERSION|\\$\\$volatile_load|\\$\\$volatile_store|\\$\\$wasm_memory_grow|\\$\\$wasm_memory_size)"
20+
21+
# $ compile-time directives
22+
- preproc: "(\\$foreach|\\$endforeach|\\$endswitch|\\$endfor|\\$typeof|\\$typefrom|\\$qnameof|\\$offsetof|\\$nameof|\\$kindof|\\$is_const|\\$include|\\$if|\\$foreach_r|\\$feature|\\$extnameof|\\$exec|\\$evaltype|\\$eval|\\$error|\\$embed|\\$else|\\$echo|\\$endif|\\$defined|\\$default|\\$case|\\$assert|\\$alignof|\\$and|\\$append|\\$assignable|\\$for|\\$switch|\\$sizeof|\\$stringify|\\$vaarg|\\$vaconst|\\$vacount|\\$vaexpr|\\$varef|\\$vasplat|\\$vatype)"
23+
24+
# @ attributes
25+
- preproc: "(@align|@benchmark|@bigendian|@builtin|@callconv|@cdecl|@cname|@compact|@const|@constinit|@deprecated|@dynamic|@export|@extname|@finalizer|@if|@init|@inline|@interface|@link|@littleendian|@local|@maydiscard|@naked|@noalias|@nodiscard|@noinit|@noinline|@nopadding|@norecurse|@noreturn|@nosanitize|@nostrip|@obfuscate|@operator|@optional|@overlap|@packed|@param|@priority|@private|@public|@pure|@reflect|@safemacro|@safeinfer|@section|@simd|@stdcall|@structlike|@tag|@test|@try|@try_catch|@unused|@used|@veccall|@wasm|@weak|@winmain|@catch|@ok|@weaklink)"
26+
27+
# Operators
28+
- symbol.operator: "(=>|\\?\\?\\?|\\?\\?|\\?:|&&&|\\|\\|\\||\\+\\+\\+|\\.\\.\\.|\\.\\.|!!|==|!=|<=|>=|&&|\\|\\||<<|>>|\\[<|>]|[-+*/%=<>.:;,~&|^!\\?])"
29+
30+
- symbol.brackets: "[(){}\\[\\]]"
31+
32+
# Vectors
33+
- symbol.operator:
34+
start: "\\[<"
35+
end: ">]"
36+
rules:
37+
- constant.number: "\\*"
38+
- constant.number: "\\b[0-9_]+\\b"
39+
40+
41+
# Numbers
42+
- constant.number: "\\b(0[xX][0-9a-fA-F_]+|0[oO][0-7_]+|0[bB][01_]+|[0-9_]+)([ui](8|16|32|64|128)|[Uu][Ll]{0,2}|[Ll]{1,2}|[Zz])?\\b"
43+
- constant.number: "\\b[0-9_]+(\\.[0-9_]*)?([eEpP][+-]?[0-9_]+)?([fd](16|32|64|128)?)?\\b"
44+
45+
- constant.bool: "\\b(true|false|null)\\b"
46+
47+
# Strings
2848
- constant.string:
2949
start: "\""
3050
end: "\""
3151
skip: "\\\\."
3252
rules:
33-
- constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})"
53+
- constant.specialChar: "\\\\."
3454

3555
- constant.string:
3656
start: "'"
3757
end: "'"
3858
skip: "\\\\."
3959
rules:
40-
- error: "..+"
41-
- constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})"
60+
- error: ".[^']+"
61+
- constant.specialChar: "\\\\."
62+
63+
# Raw strings `...`
64+
- constant.string:
65+
start: "`"
66+
end: "`"
67+
skip: "``"
68+
69+
# Bytes literals x'...', b64"..."
70+
- constant.string:
71+
start: "(x|b64)[`'\"]"
72+
end: "[`'\"]"
73+
skip: "\\\\."
4274

75+
# Comments
4376
- comment:
4477
start: "//"
4578
end: "$"
4679
rules:
4780
- todo: "(TODO|XXX|FIXME):?"
4881

49-
- comment:
82+
- comment.block:
5083
start: "/\\*"
5184
end: "\\*/"
5285
rules:
5386
- todo: "(TODO|XXX|FIXME):?"
5487

5588
- comment.block:
56-
start: "<\\*"
57-
end: "\\*>"
89+
start: "([^[]|^|\\s+)<\\*"
90+
end: "\\s*\\*>"
5891
rules:
5992
- todo: "(TODO|XXX|FIXME):?"
93+
- preproc: "@(param|require|ensure|return|return\\?|deprecated|pure)\\b"
94+
- type: "\\[(?:&)?(in|out|inout)\\]"
95+
96+
# Shebang
97+
- preproc.shebang:
98+
start: "^#!"
99+
end: "$"

0 commit comments

Comments
 (0)