236 lines
5.2 KiB
JavaScript
236 lines
5.2 KiB
JavaScript
/*!-----------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)
|
|
* Released under the MIT license
|
|
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
|
|
*-----------------------------------------------------------------------------*/
|
|
|
|
// src/basic-languages/tcl/tcl.ts
|
|
var conf = {
|
|
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 = {
|
|
tokenPostfix: ".tcl",
|
|
specialFunctions: [
|
|
"set",
|
|
"unset",
|
|
"rename",
|
|
"variable",
|
|
"proc",
|
|
"coroutine",
|
|
"foreach",
|
|
"incr",
|
|
"append",
|
|
"lappend",
|
|
"linsert",
|
|
"lreplace"
|
|
],
|
|
mainFunctions: [
|
|
"if",
|
|
"then",
|
|
"elseif",
|
|
"else",
|
|
"case",
|
|
"switch",
|
|
"while",
|
|
"for",
|
|
"break",
|
|
"continue",
|
|
"return",
|
|
"package",
|
|
"namespace",
|
|
"catch",
|
|
"exit",
|
|
"eval",
|
|
"expr",
|
|
"uplevel",
|
|
"upvar"
|
|
],
|
|
builtinFunctions: [
|
|
"file",
|
|
"info",
|
|
"concat",
|
|
"join",
|
|
"lindex",
|
|
"list",
|
|
"llength",
|
|
"lrange",
|
|
"lsearch",
|
|
"lsort",
|
|
"split",
|
|
"array",
|
|
"parray",
|
|
"binary",
|
|
"format",
|
|
"regexp",
|
|
"regsub",
|
|
"scan",
|
|
"string",
|
|
"subst",
|
|
"dict",
|
|
"cd",
|
|
"clock",
|
|
"exec",
|
|
"glob",
|
|
"pid",
|
|
"pwd",
|
|
"close",
|
|
"eof",
|
|
"fblocked",
|
|
"fconfigure",
|
|
"fcopy",
|
|
"fileevent",
|
|
"flush",
|
|
"gets",
|
|
"open",
|
|
"puts",
|
|
"read",
|
|
"seek",
|
|
"socket",
|
|
"tell",
|
|
"interp",
|
|
"after",
|
|
"auto_execok",
|
|
"auto_load",
|
|
"auto_mkindex",
|
|
"auto_reset",
|
|
"bgerror",
|
|
"error",
|
|
"global",
|
|
"history",
|
|
"load",
|
|
"source",
|
|
"time",
|
|
"trace",
|
|
"unknown",
|
|
"unset",
|
|
"update",
|
|
"vwait",
|
|
"winfo",
|
|
"wm",
|
|
"bind",
|
|
"event",
|
|
"pack",
|
|
"place",
|
|
"grid",
|
|
"font",
|
|
"bell",
|
|
"clipboard",
|
|
"destroy",
|
|
"focus",
|
|
"grab",
|
|
"lower",
|
|
"option",
|
|
"raise",
|
|
"selection",
|
|
"send",
|
|
"tk",
|
|
"tkwait",
|
|
"tk_bisque",
|
|
"tk_focusNext",
|
|
"tk_focusPrev",
|
|
"tk_focusFollowsMouse",
|
|
"tk_popup",
|
|
"tk_setPalette"
|
|
],
|
|
symbols: /[=><!~?:&|+\-*\/\^%]+/,
|
|
brackets: [
|
|
{ open: "(", close: ")", token: "delimiter.parenthesis" },
|
|
{ open: "{", close: "}", token: "delimiter.curly" },
|
|
{ open: "[", close: "]", token: "delimiter.square" }
|
|
],
|
|
escapes: /\\(?:[abfnrtv\\"'\[\]\{\};\$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
|
|
variables: /(?:\$+(?:(?:\:\:?)?[a-zA-Z_]\w*)+)/,
|
|
tokenizer: {
|
|
root: [
|
|
[
|
|
/[a-zA-Z_]\w*/,
|
|
{
|
|
cases: {
|
|
"@specialFunctions": {
|
|
token: "keyword.flow",
|
|
next: "@specialFunc"
|
|
},
|
|
"@mainFunctions": "keyword",
|
|
"@builtinFunctions": "variable",
|
|
"@default": "operator.scss"
|
|
}
|
|
}
|
|
],
|
|
[/\s+\-+(?!\d|\.)\w*|{\*}/, "metatag"],
|
|
{ include: "@whitespace" },
|
|
[/[{}()\[\]]/, "@brackets"],
|
|
[/@symbols/, "operator"],
|
|
[/\$+(?:\:\:)?\{/, { token: "identifier", next: "@nestedVariable" }],
|
|
[/@variables/, "type.identifier"],
|
|
[/\.(?!\d|\.)[\w\-]*/, "operator.sql"],
|
|
[/\d+(\.\d+)?/, "number"],
|
|
[/\d+/, "number"],
|
|
[/;/, "delimiter"],
|
|
[/"/, { token: "string.quote", bracket: "@open", next: "@dstring" }],
|
|
[/'/, { token: "string.quote", bracket: "@open", next: "@sstring" }]
|
|
],
|
|
dstring: [
|
|
[/\[/, { token: "@brackets", next: "@nestedCall" }],
|
|
[/\$+(?:\:\:)?\{/, { token: "identifier", next: "@nestedVariable" }],
|
|
[/@variables/, "type.identifier"],
|
|
[/[^\\$\[\]"]+/, "string"],
|
|
[/@escapes/, "string.escape"],
|
|
[/"/, { token: "string.quote", bracket: "@close", next: "@pop" }]
|
|
],
|
|
sstring: [
|
|
[/\[/, { token: "@brackets", next: "@nestedCall" }],
|
|
[/\$+(?:\:\:)?\{/, { token: "identifier", next: "@nestedVariable" }],
|
|
[/@variables/, "type.identifier"],
|
|
[/[^\\$\[\]']+/, "string"],
|
|
[/@escapes/, "string.escape"],
|
|
[/'/, { token: "string.quote", bracket: "@close", next: "@pop" }]
|
|
],
|
|
whitespace: [
|
|
[/[ \t\r\n]+/, "white"],
|
|
[/#.*\\$/, { token: "comment", next: "@newlineComment" }],
|
|
[/#.*(?!\\)$/, "comment"]
|
|
],
|
|
newlineComment: [
|
|
[/.*\\$/, "comment"],
|
|
[/.*(?!\\)$/, { token: "comment", next: "@pop" }]
|
|
],
|
|
nestedVariable: [
|
|
[/[^\{\}\$]+/, "type.identifier"],
|
|
[/\}/, { token: "identifier", next: "@pop" }]
|
|
],
|
|
nestedCall: [
|
|
[/\[/, { token: "@brackets", next: "@nestedCall" }],
|
|
[/\]/, { token: "@brackets", next: "@pop" }],
|
|
{ include: "root" }
|
|
],
|
|
specialFunc: [
|
|
[/"/, { token: "string", next: "@dstring" }],
|
|
[/'/, { token: "string", next: "@sstring" }],
|
|
[/\S+/, { token: "type", next: "@pop" }]
|
|
]
|
|
}
|
|
};
|
|
export {
|
|
conf,
|
|
language
|
|
};
|