securityos/node_modules/monaco-editor/esm/vs/basic-languages/lua/lua.js

161 lines
3.4 KiB
JavaScript

/*!-----------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Version: 0.36.1(6c56744c3419458f0dd48864520b759d1a3a1ca8)
* Released under the MIT license
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
*-----------------------------------------------------------------------------*/
// src/basic-languages/lua/lua.ts
var conf = {
comments: {
lineComment: "--",
blockComment: ["--[[", "]]"]
},
brackets: [
["{", "}"],
["[", "]"],
["(", ")"]
],
autoClosingPairs: [
{ open: "{", close: "}" },
{ open: "[", close: "]" },
{ open: "(", close: ")" },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: "{", close: "}" },
{ open: "[", close: "]" },
{ open: "(", close: ")" },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
]
};
var language = {
defaultToken: "",
tokenPostfix: ".lua",
keywords: [
"and",
"break",
"do",
"else",
"elseif",
"end",
"false",
"for",
"function",
"goto",
"if",
"in",
"local",
"nil",
"not",
"or",
"repeat",
"return",
"then",
"true",
"until",
"while"
],
brackets: [
{ token: "delimiter.bracket", open: "{", close: "}" },
{ token: "delimiter.array", open: "[", close: "]" },
{ token: "delimiter.parenthesis", open: "(", close: ")" }
],
operators: [
"+",
"-",
"*",
"/",
"%",
"^",
"#",
"==",
"~=",
"<=",
">=",
"<",
">",
"=",
";",
":",
",",
".",
"..",
"..."
],
symbols: /[=><!~?:&|+\-*\/\^%]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
tokenizer: {
root: [
[
/[a-zA-Z_]\w*/,
{
cases: {
"@keywords": { token: "keyword.$0" },
"@default": "identifier"
}
}
],
{ include: "@whitespace" },
[/(,)(\s*)([a-zA-Z_]\w*)(\s*)(:)(?!:)/, ["delimiter", "", "key", "", "delimiter"]],
[/({)(\s*)([a-zA-Z_]\w*)(\s*)(:)(?!:)/, ["@brackets", "", "key", "", "delimiter"]],
[/[{}()\[\]]/, "@brackets"],
[
/@symbols/,
{
cases: {
"@operators": "delimiter",
"@default": ""
}
}
],
[/\d*\.\d+([eE][\-+]?\d+)?/, "number.float"],
[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/, "number.hex"],
[/\d+?/, "number"],
[/[;,.]/, "delimiter"],
[/"([^"\\]|\\.)*$/, "string.invalid"],
[/'([^'\\]|\\.)*$/, "string.invalid"],
[/"/, "string", '@string."'],
[/'/, "string", "@string.'"]
],
whitespace: [
[/[ \t\r\n]+/, ""],
[/--\[([=]*)\[/, "comment", "@comment.$1"],
[/--.*$/, "comment"]
],
comment: [
[/[^\]]+/, "comment"],
[
/\]([=]*)\]/,
{
cases: {
"$1==$S2": { token: "comment", next: "@pop" },
"@default": "comment"
}
}
],
[/./, "comment"]
],
string: [
[/[^\\"']+/, "string"],
[/@escapes/, "string.escape"],
[/\\./, "string.escape.invalid"],
[
/["']/,
{
cases: {
"$#==$S2": { token: "string", next: "@pop" },
"@default": "string"
}
}
]
]
}
};
export {
conf,
language
};