419 lines
10 KiB
JavaScript
419 lines
10 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/st/st.ts
|
|
var conf = {
|
|
comments: {
|
|
lineComment: "//",
|
|
blockComment: ["(*", "*)"]
|
|
},
|
|
brackets: [
|
|
["{", "}"],
|
|
["[", "]"],
|
|
["(", ")"],
|
|
["var", "end_var"],
|
|
["var_input", "end_var"],
|
|
["var_output", "end_var"],
|
|
["var_in_out", "end_var"],
|
|
["var_temp", "end_var"],
|
|
["var_global", "end_var"],
|
|
["var_access", "end_var"],
|
|
["var_external", "end_var"],
|
|
["type", "end_type"],
|
|
["struct", "end_struct"],
|
|
["program", "end_program"],
|
|
["function", "end_function"],
|
|
["function_block", "end_function_block"],
|
|
["action", "end_action"],
|
|
["step", "end_step"],
|
|
["initial_step", "end_step"],
|
|
["transaction", "end_transaction"],
|
|
["configuration", "end_configuration"],
|
|
["tcp", "end_tcp"],
|
|
["recource", "end_recource"],
|
|
["channel", "end_channel"],
|
|
["library", "end_library"],
|
|
["folder", "end_folder"],
|
|
["binaries", "end_binaries"],
|
|
["includes", "end_includes"],
|
|
["sources", "end_sources"]
|
|
],
|
|
autoClosingPairs: [
|
|
{ open: "[", close: "]" },
|
|
{ open: "{", close: "}" },
|
|
{ open: "(", close: ")" },
|
|
{ open: "/*", close: "*/" },
|
|
{ open: "'", close: "'", notIn: ["string_sq"] },
|
|
{ open: '"', close: '"', notIn: ["string_dq"] },
|
|
{ open: "var_input", close: "end_var" },
|
|
{ open: "var_output", close: "end_var" },
|
|
{ open: "var_in_out", close: "end_var" },
|
|
{ open: "var_temp", close: "end_var" },
|
|
{ open: "var_global", close: "end_var" },
|
|
{ open: "var_access", close: "end_var" },
|
|
{ open: "var_external", close: "end_var" },
|
|
{ open: "type", close: "end_type" },
|
|
{ open: "struct", close: "end_struct" },
|
|
{ open: "program", close: "end_program" },
|
|
{ open: "function", close: "end_function" },
|
|
{ open: "function_block", close: "end_function_block" },
|
|
{ open: "action", close: "end_action" },
|
|
{ open: "step", close: "end_step" },
|
|
{ open: "initial_step", close: "end_step" },
|
|
{ open: "transaction", close: "end_transaction" },
|
|
{ open: "configuration", close: "end_configuration" },
|
|
{ open: "tcp", close: "end_tcp" },
|
|
{ open: "recource", close: "end_recource" },
|
|
{ open: "channel", close: "end_channel" },
|
|
{ open: "library", close: "end_library" },
|
|
{ open: "folder", close: "end_folder" },
|
|
{ open: "binaries", close: "end_binaries" },
|
|
{ open: "includes", close: "end_includes" },
|
|
{ open: "sources", close: "end_sources" }
|
|
],
|
|
surroundingPairs: [
|
|
{ open: "{", close: "}" },
|
|
{ open: "[", close: "]" },
|
|
{ open: "(", close: ")" },
|
|
{ open: '"', close: '"' },
|
|
{ open: "'", close: "'" },
|
|
{ open: "var", close: "end_var" },
|
|
{ open: "var_input", close: "end_var" },
|
|
{ open: "var_output", close: "end_var" },
|
|
{ open: "var_in_out", close: "end_var" },
|
|
{ open: "var_temp", close: "end_var" },
|
|
{ open: "var_global", close: "end_var" },
|
|
{ open: "var_access", close: "end_var" },
|
|
{ open: "var_external", close: "end_var" },
|
|
{ open: "type", close: "end_type" },
|
|
{ open: "struct", close: "end_struct" },
|
|
{ open: "program", close: "end_program" },
|
|
{ open: "function", close: "end_function" },
|
|
{ open: "function_block", close: "end_function_block" },
|
|
{ open: "action", close: "end_action" },
|
|
{ open: "step", close: "end_step" },
|
|
{ open: "initial_step", close: "end_step" },
|
|
{ open: "transaction", close: "end_transaction" },
|
|
{ open: "configuration", close: "end_configuration" },
|
|
{ open: "tcp", close: "end_tcp" },
|
|
{ open: "recource", close: "end_recource" },
|
|
{ open: "channel", close: "end_channel" },
|
|
{ open: "library", close: "end_library" },
|
|
{ open: "folder", close: "end_folder" },
|
|
{ open: "binaries", close: "end_binaries" },
|
|
{ open: "includes", close: "end_includes" },
|
|
{ open: "sources", close: "end_sources" }
|
|
],
|
|
folding: {
|
|
markers: {
|
|
start: new RegExp("^\\s*#pragma\\s+region\\b"),
|
|
end: new RegExp("^\\s*#pragma\\s+endregion\\b")
|
|
}
|
|
}
|
|
};
|
|
var language = {
|
|
defaultToken: "",
|
|
tokenPostfix: ".st",
|
|
ignoreCase: true,
|
|
brackets: [
|
|
{ token: "delimiter.curly", open: "{", close: "}" },
|
|
{ token: "delimiter.parenthesis", open: "(", close: ")" },
|
|
{ token: "delimiter.square", open: "[", close: "]" }
|
|
],
|
|
keywords: [
|
|
"if",
|
|
"end_if",
|
|
"elsif",
|
|
"else",
|
|
"case",
|
|
"of",
|
|
"to",
|
|
"__try",
|
|
"__catch",
|
|
"__finally",
|
|
"do",
|
|
"with",
|
|
"by",
|
|
"while",
|
|
"repeat",
|
|
"end_while",
|
|
"end_repeat",
|
|
"end_case",
|
|
"for",
|
|
"end_for",
|
|
"task",
|
|
"retain",
|
|
"non_retain",
|
|
"constant",
|
|
"with",
|
|
"at",
|
|
"exit",
|
|
"return",
|
|
"interval",
|
|
"priority",
|
|
"address",
|
|
"port",
|
|
"on_channel",
|
|
"then",
|
|
"iec",
|
|
"file",
|
|
"uses",
|
|
"version",
|
|
"packagetype",
|
|
"displayname",
|
|
"copyright",
|
|
"summary",
|
|
"vendor",
|
|
"common_source",
|
|
"from",
|
|
"extends",
|
|
"implements"
|
|
],
|
|
constant: ["false", "true", "null"],
|
|
defineKeywords: [
|
|
"var",
|
|
"var_input",
|
|
"var_output",
|
|
"var_in_out",
|
|
"var_temp",
|
|
"var_global",
|
|
"var_access",
|
|
"var_external",
|
|
"end_var",
|
|
"type",
|
|
"end_type",
|
|
"struct",
|
|
"end_struct",
|
|
"program",
|
|
"end_program",
|
|
"function",
|
|
"end_function",
|
|
"function_block",
|
|
"end_function_block",
|
|
"interface",
|
|
"end_interface",
|
|
"method",
|
|
"end_method",
|
|
"property",
|
|
"end_property",
|
|
"namespace",
|
|
"end_namespace",
|
|
"configuration",
|
|
"end_configuration",
|
|
"tcp",
|
|
"end_tcp",
|
|
"resource",
|
|
"end_resource",
|
|
"channel",
|
|
"end_channel",
|
|
"library",
|
|
"end_library",
|
|
"folder",
|
|
"end_folder",
|
|
"binaries",
|
|
"end_binaries",
|
|
"includes",
|
|
"end_includes",
|
|
"sources",
|
|
"end_sources",
|
|
"action",
|
|
"end_action",
|
|
"step",
|
|
"initial_step",
|
|
"end_step",
|
|
"transaction",
|
|
"end_transaction"
|
|
],
|
|
typeKeywords: [
|
|
"int",
|
|
"sint",
|
|
"dint",
|
|
"lint",
|
|
"usint",
|
|
"uint",
|
|
"udint",
|
|
"ulint",
|
|
"real",
|
|
"lreal",
|
|
"time",
|
|
"date",
|
|
"time_of_day",
|
|
"date_and_time",
|
|
"string",
|
|
"bool",
|
|
"byte",
|
|
"word",
|
|
"dword",
|
|
"array",
|
|
"pointer",
|
|
"lword"
|
|
],
|
|
operators: [
|
|
"=",
|
|
">",
|
|
"<",
|
|
":",
|
|
":=",
|
|
"<=",
|
|
">=",
|
|
"<>",
|
|
"&",
|
|
"+",
|
|
"-",
|
|
"*",
|
|
"**",
|
|
"MOD",
|
|
"^",
|
|
"or",
|
|
"and",
|
|
"not",
|
|
"xor",
|
|
"abs",
|
|
"acos",
|
|
"asin",
|
|
"atan",
|
|
"cos",
|
|
"exp",
|
|
"expt",
|
|
"ln",
|
|
"log",
|
|
"sin",
|
|
"sqrt",
|
|
"tan",
|
|
"sel",
|
|
"max",
|
|
"min",
|
|
"limit",
|
|
"mux",
|
|
"shl",
|
|
"shr",
|
|
"rol",
|
|
"ror",
|
|
"indexof",
|
|
"sizeof",
|
|
"adr",
|
|
"adrinst",
|
|
"bitadr",
|
|
"is_valid",
|
|
"ref",
|
|
"ref_to"
|
|
],
|
|
builtinVariables: [],
|
|
builtinFunctions: [
|
|
"sr",
|
|
"rs",
|
|
"tp",
|
|
"ton",
|
|
"tof",
|
|
"eq",
|
|
"ge",
|
|
"le",
|
|
"lt",
|
|
"ne",
|
|
"round",
|
|
"trunc",
|
|
"ctd",
|
|
"\u0441tu",
|
|
"ctud",
|
|
"r_trig",
|
|
"f_trig",
|
|
"move",
|
|
"concat",
|
|
"delete",
|
|
"find",
|
|
"insert",
|
|
"left",
|
|
"len",
|
|
"replace",
|
|
"right",
|
|
"rtc"
|
|
],
|
|
symbols: /[=><!~?:&|+\-*\/\^%]+/,
|
|
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
|
|
tokenizer: {
|
|
root: [
|
|
[/(\.\.)/, "delimiter"],
|
|
[/\b(16#[0-9A-Fa-f\_]*)+\b/, "number.hex"],
|
|
[/\b(2#[01\_]+)+\b/, "number.binary"],
|
|
[/\b(8#[0-9\_]*)+\b/, "number.octal"],
|
|
[/\b\d*\.\d+([eE][\-+]?\d+)?\b/, "number.float"],
|
|
[/\b(L?REAL)#[0-9\_\.e]+\b/, "number.float"],
|
|
[/\b(BYTE|(?:D|L)?WORD|U?(?:S|D|L)?INT)#[0-9\_]+\b/, "number"],
|
|
[/\d+/, "number"],
|
|
[/\b(T|DT|TOD)#[0-9:-_shmyd]+\b/, "tag"],
|
|
[/\%(I|Q|M)(X|B|W|D|L)[0-9\.]+/, "tag"],
|
|
[/\%(I|Q|M)[0-9\.]*/, "tag"],
|
|
[/\b[A-Za-z]{1,6}#[0-9]+\b/, "tag"],
|
|
[/\b(TO_|CTU_|CTD_|CTUD_|MUX_|SEL_)[A_Za-z]+\b/, "predefined"],
|
|
[/\b[A_Za-z]+(_TO_)[A_Za-z]+\b/, "predefined"],
|
|
[/[;]/, "delimiter"],
|
|
[/[.]/, { token: "delimiter", next: "@params" }],
|
|
[
|
|
/[a-zA-Z_]\w*/,
|
|
{
|
|
cases: {
|
|
"@operators": "operators",
|
|
"@keywords": "keyword",
|
|
"@typeKeywords": "type",
|
|
"@defineKeywords": "variable",
|
|
"@constant": "constant",
|
|
"@builtinVariables": "predefined",
|
|
"@builtinFunctions": "predefined",
|
|
"@default": "identifier"
|
|
}
|
|
}
|
|
],
|
|
{ include: "@whitespace" },
|
|
[/[{}()\[\]]/, "@brackets"],
|
|
[/"([^"\\]|\\.)*$/, "string.invalid"],
|
|
[/"/, { token: "string.quote", bracket: "@open", next: "@string_dq" }],
|
|
[/'/, { token: "string.quote", bracket: "@open", next: "@string_sq" }],
|
|
[/'[^\\']'/, "string"],
|
|
[/(')(@escapes)(')/, ["string", "string.escape", "string"]],
|
|
[/'/, "string.invalid"]
|
|
],
|
|
params: [
|
|
[/\b[A-Za-z0-9_]+\b(?=\()/, { token: "identifier", next: "@pop" }],
|
|
[/\b[A-Za-z0-9_]+\b/, "variable.name", "@pop"]
|
|
],
|
|
comment: [
|
|
[/[^\/*]+/, "comment"],
|
|
[/\/\*/, "comment", "@push"],
|
|
["\\*/", "comment", "@pop"],
|
|
[/[\/*]/, "comment"]
|
|
],
|
|
comment2: [
|
|
[/[^\(*]+/, "comment"],
|
|
[/\(\*/, "comment", "@push"],
|
|
["\\*\\)", "comment", "@pop"],
|
|
[/[\(*]/, "comment"]
|
|
],
|
|
whitespace: [
|
|
[/[ \t\r\n]+/, "white"],
|
|
[/\/\/.*$/, "comment"],
|
|
[/\/\*/, "comment", "@comment"],
|
|
[/\(\*/, "comment", "@comment2"]
|
|
],
|
|
string_dq: [
|
|
[/[^\\"]+/, "string"],
|
|
[/@escapes/, "string.escape"],
|
|
[/\\./, "string.escape.invalid"],
|
|
[/"/, { token: "string.quote", bracket: "@close", next: "@pop" }]
|
|
],
|
|
string_sq: [
|
|
[/[^\\']+/, "string"],
|
|
[/@escapes/, "string.escape"],
|
|
[/\\./, "string.escape.invalid"],
|
|
[/'/, { token: "string.quote", bracket: "@close", next: "@pop" }]
|
|
]
|
|
}
|
|
};
|
|
export {
|
|
conf,
|
|
language
|
|
};
|