This commit is contained in:
2025-11-02 19:17:20 +08:00
parent ebf784146e
commit e71b69db5f
2575 changed files with 1242294 additions and 95 deletions

View File

@@ -0,0 +1 @@
export {}

View File

@@ -0,0 +1,24 @@
/*!-----------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Version: 0.54.0(7c2310116c57517348bbd868a21139f32454be22)
* Released under the MIT license
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
*-----------------------------------------------------------------------------*/
// src/basic-languages/lexon/lexon.contribution.ts
import { registerLanguage } from "../_.contribution.js";
registerLanguage({
id: "lexon",
extensions: [".lex"],
aliases: ["Lexon"],
loader: () => {
if (false) {
return new Promise((resolve, reject) => {
__require(["vs/basic-languages/lexon/lexon"], resolve, reject);
});
} else {
return import("./lexon.js");
}
}
});

View File

@@ -0,0 +1,167 @@
/*!-----------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Version: 0.54.0(7c2310116c57517348bbd868a21139f32454be22)
* Released under the MIT license
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
*-----------------------------------------------------------------------------*/
// src/basic-languages/lexon/lexon.ts
var conf = {
comments: {
lineComment: "COMMENT"
// blockComment: ['COMMENT', '.'],
},
brackets: [["(", ")"]],
autoClosingPairs: [
{ open: "{", close: "}" },
{ open: "[", close: "]" },
{ open: "(", close: ")" },
{ open: '"', close: '"' },
{ open: ":", close: "." }
],
surroundingPairs: [
{ open: "{", close: "}" },
{ open: "[", close: "]" },
{ open: "(", close: ")" },
{ open: "`", close: "`" },
{ open: '"', close: '"' },
{ open: "'", close: "'" },
{ open: ":", close: "." }
],
folding: {
markers: {
start: new RegExp("^\\s*(::\\s*|COMMENT\\s+)#region"),
end: new RegExp("^\\s*(::\\s*|COMMENT\\s+)#endregion")
}
}
};
var language = {
// Set defaultToken to invalid to see what you do not tokenize yet
// defaultToken: 'invalid',
tokenPostfix: ".lexon",
ignoreCase: true,
keywords: [
"lexon",
"lex",
"clause",
"terms",
"contracts",
"may",
"pay",
"pays",
"appoints",
"into",
"to"
],
typeKeywords: ["amount", "person", "key", "time", "date", "asset", "text"],
operators: [
"less",
"greater",
"equal",
"le",
"gt",
"or",
"and",
"add",
"added",
"subtract",
"subtracted",
"multiply",
"multiplied",
"times",
"divide",
"divided",
"is",
"be",
"certified"
],
// we include these common regular expressions
symbols: /[=><!~?:&|+\-*\/\^%]+/,
// The main tokenizer for our languages
tokenizer: {
root: [
// comment
[/^(\s*)(comment:?(?:\s.*|))$/, ["", "comment"]],
// special identifier cases
[
/"/,
{
token: "identifier.quote",
bracket: "@open",
next: "@quoted_identifier"
}
],
[
"LEX$",
{
token: "keyword",
bracket: "@open",
next: "@identifier_until_period"
}
],
["LEXON", { token: "keyword", bracket: "@open", next: "@semver" }],
[
":",
{
token: "delimiter",
bracket: "@open",
next: "@identifier_until_period"
}
],
// identifiers and keywords
[
/[a-z_$][\w$]*/,
{
cases: {
"@operators": "operator",
"@typeKeywords": "keyword.type",
"@keywords": "keyword",
"@default": "identifier"
}
}
],
// whitespace
{ include: "@whitespace" },
// delimiters and operators
[/[{}()\[\]]/, "@brackets"],
[/[<>](?!@symbols)/, "@brackets"],
[/@symbols/, "delimiter"],
// numbers
[/\d*\.\d*\.\d*/, "number.semver"],
[/\d*\.\d+([eE][\-+]?\d+)?/, "number.float"],
[/0[xX][0-9a-fA-F]+/, "number.hex"],
[/\d+/, "number"],
// delimiter: after number because of .\d floats
[/[;,.]/, "delimiter"]
],
quoted_identifier: [
[/[^\\"]+/, "identifier"],
[/"/, { token: "identifier.quote", bracket: "@close", next: "@pop" }]
],
space_identifier_until_period: [
[":", "delimiter"],
[" ", { token: "white", next: "@identifier_rest" }]
],
identifier_until_period: [
{ include: "@whitespace" },
[":", { token: "delimiter", next: "@identifier_rest" }],
[/[^\\.]+/, "identifier"],
[/\./, { token: "delimiter", bracket: "@close", next: "@pop" }]
],
identifier_rest: [
[/[^\\.]+/, "identifier"],
[/\./, { token: "delimiter", bracket: "@close", next: "@pop" }]
],
semver: [
{ include: "@whitespace" },
[":", "delimiter"],
[/\d*\.\d*\.\d*/, { token: "number.semver", bracket: "@close", next: "@pop" }]
],
whitespace: [[/[ \t\r\n]+/, "white"]]
}
};
export {
conf,
language
};