parent
649efccf26
commit
9b2a0a8dc6
@ -0,0 +1,264 @@ |
||||
/* eslint-disable no-useless-escape */ |
||||
export const moveLanguageConfig = { |
||||
comments: { |
||||
lineComment: "//", |
||||
blockComment: ["/*", "*/"], |
||||
}, |
||||
brackets: [ |
||||
["{", "}"], |
||||
["[", "]"], |
||||
["(", ")"], |
||||
], |
||||
autoClosingPairs: [ |
||||
{ open: "[", close: "]" }, |
||||
{ open: "{", close: "}" }, |
||||
{ open: "(", close: ")" }, |
||||
{ open: '"', close: '"', notIn: ["string"] }, |
||||
], |
||||
surroundingPairs: [ |
||||
{ open: "{", close: "}" }, |
||||
{ open: "[", close: "]" }, |
||||
{ open: "(", close: ")" }, |
||||
{ open: '"', close: '"' }, |
||||
{ open: "'", close: "'" }, |
||||
], |
||||
folding: { |
||||
markers: { |
||||
start: new RegExp("^\\s*#pragma\\s+region\\b"), |
||||
end: new RegExp("^\\s*#pragma\\s+endregion\\b"), |
||||
}, |
||||
}, |
||||
}; |
||||
export const moveTokenProvider = { |
||||
// Set defaultToken to invalid to see what you do not tokenize yet
|
||||
// defaultToken: 'invalid',
|
||||
keywords: [ |
||||
"as", |
||||
"break", |
||||
"const", |
||||
"crate", |
||||
"enum", |
||||
"extern", |
||||
"false", |
||||
"fun", |
||||
"script", |
||||
"in", |
||||
"let", |
||||
"module", |
||||
"move", |
||||
"mut", |
||||
"pub", |
||||
"ref", |
||||
"return", |
||||
"self", |
||||
"Self", |
||||
"static", |
||||
"struct", |
||||
"super", |
||||
"trait", |
||||
"true", |
||||
"type", |
||||
"unsafe", |
||||
"use", |
||||
"where", |
||||
"use", |
||||
"macro_rules", |
||||
], |
||||
|
||||
controlFlowKeywords: [ |
||||
"continue", |
||||
"else", |
||||
"for", |
||||
"if", |
||||
"while", |
||||
"loop", |
||||
"match", |
||||
], |
||||
|
||||
typeKeywords: [ |
||||
"Self", |
||||
"m32", |
||||
"m64", |
||||
"m128", |
||||
"f80", |
||||
"f16", |
||||
"f128", |
||||
"int", |
||||
"uint", |
||||
"float", |
||||
"char", |
||||
"bool", |
||||
"u8", |
||||
"u16", |
||||
"u32", |
||||
"u64", |
||||
"f32", |
||||
"f64", |
||||
"i8", |
||||
"i16", |
||||
"i32", |
||||
"i64", |
||||
"str", |
||||
"Option", |
||||
"Either", |
||||
"c_float", |
||||
"c_double", |
||||
"c_void", |
||||
"FILE", |
||||
"fpos_t", |
||||
"DIR", |
||||
"dirent", |
||||
"c_char", |
||||
"c_schar", |
||||
"c_uchar", |
||||
"c_short", |
||||
"c_ushort", |
||||
"c_int", |
||||
"c_uint", |
||||
"c_long", |
||||
"c_ulong", |
||||
"size_t", |
||||
"ptrdiff_t", |
||||
"clock_t", |
||||
"time_t", |
||||
"c_longlong", |
||||
"c_ulonglong", |
||||
"intptr_t", |
||||
"uintptr_t", |
||||
"off_t", |
||||
"dev_t", |
||||
"ino_t", |
||||
"pid_t", |
||||
"mode_t", |
||||
"ssize_t", |
||||
], |
||||
|
||||
operators: [ |
||||
"=", |
||||
">", |
||||
"<", |
||||
"!", |
||||
"~", |
||||
"?", |
||||
":", |
||||
"==", |
||||
"<=", |
||||
">=", |
||||
"!=", |
||||
"&&", |
||||
"||", |
||||
"++", |
||||
"--", |
||||
"+", |
||||
"-", |
||||
"*", |
||||
"/", |
||||
"&", |
||||
"|", |
||||
"^", |
||||
"%", |
||||
"<<", |
||||
">>", |
||||
">>>", |
||||
"+=", |
||||
"-=", |
||||
"*=", |
||||
"/=", |
||||
"&=", |
||||
"|=", |
||||
"^=", |
||||
"%=", |
||||
"<<=", |
||||
">>=", |
||||
">>>=", |
||||
], |
||||
|
||||
// we include these common regular expressions
|
||||
symbols: /[=><!~?:&|+\-*\/\^%]+/, |
||||
|
||||
// C# style strings
|
||||
escapes: |
||||
/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/, |
||||
|
||||
// The main tokenizer for languages
|
||||
tokenizer: { |
||||
root: [ |
||||
// identifiers and keywords
|
||||
[ |
||||
/[a-z_$][\w$]*/, |
||||
{ |
||||
cases: { |
||||
"@typeKeywords": "type.identifier", |
||||
"@keywords": { |
||||
cases: { |
||||
fun: { token: "keyword", next: "@func_decl" }, |
||||
let: { token: "keyword", next: "@func_decl" }, |
||||
if: { token: "keyword", next: "@func_decl" }, |
||||
use: { token: "keyword", next: "@func_decl" }, |
||||
"@default": "keyword", |
||||
}, |
||||
}, |
||||
"@controlFlowKeywords": "keyword.control", |
||||
"@default": "variable", |
||||
}, |
||||
}, |
||||
], |
||||
[/[A-Z][\w\$]*/, "type.identifier"], // to show class names nicely
|
||||
|
||||
// whitespace
|
||||
{ include: "@whitespace" }, |
||||
|
||||
// delimiters and operators
|
||||
[/[{}()\[\]]/, "@brackets"], |
||||
[/[<>](?!@symbols)/, "@brackets"], |
||||
[/@symbols/, { cases: { "@operators": "operator", "@default": "" } }], |
||||
|
||||
// @ annotations.
|
||||
// As an example, we emit a debugging log message on these tokens.
|
||||
// Note: message are supressed during the first load -- change some lines to see them.
|
||||
[ |
||||
/@\s*[a-zA-Z_\$][\w\$]*/, |
||||
{ token: "annotation", log: "annotation token: $0" }, |
||||
], |
||||
|
||||
// numbers
|
||||
[/\d*\.\d+([eE][\-+]?\d+)?/, "number.float"], |
||||
[/0[xX][0-9a-fA-F]+/, "number.hex"], |
||||
[/\d+/, "number"], |
||||
|
||||
// delimiter: after number because of .\d floats
|
||||
[/[;,.]/, "delimiter"], |
||||
|
||||
// strings
|
||||
[/"([^"\\]|\\.)*$/, "string.invalid"], // non-teminated string
|
||||
[/"/, { token: "string.quote", bracket: "@open", next: "@string" }], |
||||
|
||||
// characters
|
||||
[/'[^\\']'/, "string"], |
||||
[/(')(@escapes)(')/, ["string", "string.escape", "string"]], |
||||
[/'/, "string.invalid"], |
||||
], |
||||
|
||||
comment: [ |
||||
[/[^\/*]+/, "comment"], |
||||
[/\/\*/, "comment", "@push"], // nested comment
|
||||
["\\*/", "comment", "@pop"], |
||||
[/[\/*]/, "comment"], |
||||
], |
||||
|
||||
string: [ |
||||
[/[^\\"]+/, "string"], |
||||
[/@escapes/, "string.escape"], |
||||
[/\\./, "string.escape.invalid"], |
||||
[/"/, { token: "string.quote", bracket: "@close", next: "@pop" }], |
||||
], |
||||
|
||||
whitespace: [ |
||||
[/[ \t\r\n]+/, "white"], |
||||
[/\/\*/, "comment", "@comment"], |
||||
[/\/\/.*$/, "comment"], |
||||
], |
||||
|
||||
func_decl: [[/[a-z_$][\w$]*/, "support.function", "@pop"]], |
||||
}, |
||||
}; |
Loading…
Reference in new issue