|
| 1 | +-- mod-version:3 |
| 2 | +local syntax = require "core.syntax" |
| 3 | + |
| 4 | +syntax.add { |
| 5 | + name = "C3", |
| 6 | + files = { "%.c3$", "%.c3i$", "%.c3t$" }, |
| 7 | + comment = "//", |
| 8 | + block_comment = {"/*", "*/"}, |
| 9 | + |
| 10 | + patterns = { |
| 11 | + { pattern = "//.-\n", type = "comment" }, |
| 12 | + { pattern = { "/%*", "%*/" }, type = "comment" }, |
| 13 | + { pattern = { "<%*", "%*>" }, type = "comment" }, |
| 14 | + { pattern = { '"', '"', '\\' }, type = "string" }, |
| 15 | + { pattern = { "`", "`", '\\' }, type = "string" }, |
| 16 | + { pattern = { "'", "'", '\\' }, type = "string" }, |
| 17 | + { pattern = "0b[01_]+", type = "number" }, |
| 18 | + { pattern = "0[oO][0-7_]+", type = "number" }, |
| 19 | + { pattern = "0[xX][%da-fA-F_]+", type = "number" }, |
| 20 | + { pattern = "%d+[%d%._e]*", type = "number" }, |
| 21 | + { pattern = "[%l_]+[%u]*[%w_]*%f[(]", type = "function" }, |
| 22 | + { pattern = "[%l_]+[%u%d]*", type = "symbol" }, |
| 23 | + { pattern = "[%u_]+[%l%d]*", type = "keyword2" }, |
| 24 | + }, |
| 25 | + |
| 26 | + symbols = { |
| 27 | + ["alias"] = "keyword", |
| 28 | + ["asm"] = "keyword", |
| 29 | + ["assert"] = "keyword", |
| 30 | + ["attrdef"] = "keyword", |
| 31 | + ["bitstruct"] = "keyword", |
| 32 | + ["break"] = "keyword", |
| 33 | + ["case"] = "keyword", |
| 34 | + ["catch"] = "keyword", |
| 35 | + ["const"] = "keyword", |
| 36 | + ["continue"] = "keyword", |
| 37 | + ["default"] = "keyword", |
| 38 | + ["defer"] = "keyword", |
| 39 | + ["do"] = "keyword", |
| 40 | + ["else"] = "keyword", |
| 41 | + ["enum"] = "keyword", |
| 42 | + ["extern"] = "keyword", |
| 43 | + ["faultdef"] = "keyword", |
| 44 | + ["fn"] = "keyword", |
| 45 | + ["for"] = "keyword", |
| 46 | + ["foreach"] = "keyword", |
| 47 | + ["foreach_r"] = "keyword", |
| 48 | + ["if"] = "keyword", |
| 49 | + ["import"] = "keyword", |
| 50 | + ["inline"] = "keyword", |
| 51 | + ["interface"] = "keyword", |
| 52 | + ["macro"] = "keyword", |
| 53 | + ["module"] = "keyword", |
| 54 | + ["nextcase"] = "keyword", |
| 55 | + ["return"] = "keyword", |
| 56 | + ["static"] = "keyword", |
| 57 | + ["struct"] = "keyword", |
| 58 | + ["switch"] = "keyword", |
| 59 | + ["tlocal"] = "keyword", |
| 60 | + ["try"] = "keyword", |
| 61 | + ["typedef"] = "keyword", |
| 62 | + ["typeid"] = "keyword", |
| 63 | + ["union"] = "keyword", |
| 64 | + ["var"] = "keyword", |
| 65 | + ["while"] = "keyword", |
| 66 | + ["$alignof"] = "keyword", |
| 67 | + ["$assert"] = "keyword", |
| 68 | + ["$assignable"] = "keyword", |
| 69 | + ["$case"] = "keyword", |
| 70 | + ["$default"] = "keyword", |
| 71 | + ["$defined"] = "keyword", |
| 72 | + ["$echo"] = "keyword", |
| 73 | + ["$else"] = "keyword", |
| 74 | + ["$embed"] = "keyword", |
| 75 | + ["$endfor"] = "keyword", |
| 76 | + ["$endforeach"] = "keyword", |
| 77 | + ["$endif"] = "keyword", |
| 78 | + ["$endswitch"] = "keyword", |
| 79 | + ["$eval"] = "keyword", |
| 80 | + ["$evaltype"] = "keyword", |
| 81 | + ["$error"] = "keyword", |
| 82 | + ["$exec"] = "keyword", |
| 83 | + ["$extnameof"] = "keyword", |
| 84 | + ["$feature"] = "keyword", |
| 85 | + ["$for"] = "keyword", |
| 86 | + ["$foreach"] = "keyword", |
| 87 | + ["$if"] = "keyword", |
| 88 | + ["$include"] = "keyword", |
| 89 | + ["$is_const"] = "keyword", |
| 90 | + ["$nameof"] = "keyword", |
| 91 | + ["$offsetof"] = "keyword", |
| 92 | + ["$qnameof"] = "keyword", |
| 93 | + ["$sizeof"] = "keyword", |
| 94 | + ["$stringify"] = "keyword", |
| 95 | + ["$switch"] = "keyword", |
| 96 | + ["$typefrom"] = "keyword", |
| 97 | + ["$typeof"] = "keyword", |
| 98 | + ["$vaarg"] = "keyword", |
| 99 | + ["$vacount"] = "keyword", |
| 100 | + ["$vaconst"] = "keyword", |
| 101 | + ["$vaexpr"] = "keyword", |
| 102 | + ["$vasplat"] = "keyword", |
| 103 | + ["$vatype"] = "keyword", |
| 104 | + |
| 105 | + --types |
| 106 | + ["any"] = "keyword2", |
| 107 | + ["bfloat"] = "keyword2", |
| 108 | + ["bool"] = "keyword2", |
| 109 | + ["char"] = "keyword2", |
| 110 | + ["double"] = "keyword2", |
| 111 | + ["fault"] = "keyword2", |
| 112 | + ["float"] = "keyword2", |
| 113 | + ["float128"] = "keyword2", |
| 114 | + ["float16"] = "keyword2", |
| 115 | + ["ichar"] = "keyword2", |
| 116 | + ["int"] = "keyword2", |
| 117 | + ["int128"] = "keyword2", |
| 118 | + ["iptr"] = "keyword2", |
| 119 | + ["isz"] = "keyword2", |
| 120 | + ["long"] = "keyword2", |
| 121 | + ["short"] = "keyword2", |
| 122 | + ["uint"] = "keyword2", |
| 123 | + ["uint128"] = "keyword2", |
| 124 | + ["ulong"] = "keyword2", |
| 125 | + ["uptr"] = "keyword2", |
| 126 | + ["ushort"] = "keyword2", |
| 127 | + ["usz"] = "keyword2", |
| 128 | + ["void"] = "keyword2", |
| 129 | + |
| 130 | + --literals |
| 131 | + ["true"] = "literal", |
| 132 | + ["false"] = "literal", |
| 133 | + ["null"] = "literal", |
| 134 | + |
| 135 | + --operators |
| 136 | + ["&"] = "operator", |
| 137 | + ["!"] = "operator", |
| 138 | + ["~"] = "operator", |
| 139 | + ["|"] = "operator", |
| 140 | + ["^"] = "operator", |
| 141 | + [":"] = "operator", |
| 142 | + [","] = "operator", |
| 143 | + [";"] = "operator", |
| 144 | + ["="] = "operator", |
| 145 | + [">"] = "operator", |
| 146 | + ["/"] = "operator", |
| 147 | + ["."] = "operator", |
| 148 | + ["<"] = "operator", |
| 149 | + ["{"] = "operator", |
| 150 | + ["["] = "operator", |
| 151 | + ["("] = "operator", |
| 152 | + ["-"] = "operator", |
| 153 | + ["%"] = "operator", |
| 154 | + ["+"] = "operator", |
| 155 | + ["?"] = "operator", |
| 156 | + ["}"] = "operator", |
| 157 | + ["]"] = "operator", |
| 158 | + [")"] = "operator", |
| 159 | + ["*"] = "operator", |
| 160 | + ["&&"] = "operator", |
| 161 | + ["->"] = "operator", |
| 162 | + ["!!"] = "operator", |
| 163 | + ["&="] = "operator", |
| 164 | + ["|="] = "operator", |
| 165 | + ["^="] = "operator", |
| 166 | + ["/="] = "operator", |
| 167 | + [".."] = "operator", |
| 168 | + ["?:"] = "operator", |
| 169 | + ["=="] = "operator", |
| 170 | + [">="] = "operator", |
| 171 | + ["=>"] = "operator", |
| 172 | + ["<="] = "operator", |
| 173 | + ["[<"] = "operator", |
| 174 | + ["-="] = "operator", |
| 175 | + ["--"] = "operator", |
| 176 | + ["%="] = "operator", |
| 177 | + ["*="] = "operator", |
| 178 | + ["!="] = "operator", |
| 179 | + ["||"] = "operator", |
| 180 | + ["+="] = "operator", |
| 181 | + ["++"] = "operator", |
| 182 | + [">]"] = "operator", |
| 183 | + ["??"] = "operator", |
| 184 | + ["::"] = "operator", |
| 185 | + ["<<"] = "operator", |
| 186 | + [">>"] = "operator", |
| 187 | + ["..."] = "operator", |
| 188 | + ["<<="] = "operator", |
| 189 | + [">>="] = "operator", |
| 190 | + ["&&&"] = "operator", |
| 191 | + ["+++"] = "operator", |
| 192 | + ["|||"] = "operator", |
| 193 | + |
| 194 | + --attributes |
| 195 | + ["@align"] = "function", |
| 196 | + ["@allow_deprecated"] = "function", |
| 197 | + ["@benchmark"] = "function", |
| 198 | + ["@bigendian"] = "function", |
| 199 | + ["@builtin"] = "function", |
| 200 | + ["@callconv"] = "function", |
| 201 | + ["@compact"] = "function", |
| 202 | + ["@const"] = "function", |
| 203 | + ["@deprecated"] = "function", |
| 204 | + ["@dynamic"] = "function", |
| 205 | + ["@export"] = "function", |
| 206 | + ["@extern"] = "function", |
| 207 | + ["@finalizer"] = "function", |
| 208 | + ["@format"] = "function", |
| 209 | + ["@if"] = "function", |
| 210 | + ["@inline"] = "function", |
| 211 | + ["@init"] = "function", |
| 212 | + ["@jump"] = "function", |
| 213 | + ["@link"] = "function", |
| 214 | + ["@littleendian"] = "function", |
| 215 | + ["@local"] = "function", |
| 216 | + ["@maydiscard"] = "function", |
| 217 | + ["@naked"] = "function", |
| 218 | + ["@noalias"] = "function", |
| 219 | + ["@nodiscard"] = "function", |
| 220 | + ["@noinit"] = "function", |
| 221 | + ["@noinline"] = "function", |
| 222 | + ["@nopadding"] = "function", |
| 223 | + ["@norecurse"] = "function", |
| 224 | + ["@noreturn"] = "function", |
| 225 | + ["@nosanitize"] = "function", |
| 226 | + ["@nostrip"] = "function", |
| 227 | + ["@obfuscate"] = "function", |
| 228 | + ["@operator"] = "function", |
| 229 | + ["@operator_r"] = "function", |
| 230 | + ["@operator_s"] = "function", |
| 231 | + ["@optional"] = "function", |
| 232 | + ["@overlap"] = "function", |
| 233 | + ["@packed"] = "function", |
| 234 | + ["@private"] = "function", |
| 235 | + ["@public"] = "function", |
| 236 | + ["@pure"] = "function", |
| 237 | + ["@reflect"] = "function", |
| 238 | + ["@safemacro"] = "function", |
| 239 | + ["@section"] = "function", |
| 240 | + ["@structlike"] = "function", |
| 241 | + ["@tag"] = "function", |
| 242 | + ["@test"] = "function", |
| 243 | + ["@unused"] = "function", |
| 244 | + ["@used"] = "function", |
| 245 | + ["@wasm"] = "function", |
| 246 | + ["@weak"] = "function", |
| 247 | + ["@winmain"] = "function" |
| 248 | + }, |
| 249 | +} |
0 commit comments