lexon.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. /*!-----------------------------------------------------------------------------
  2. * Copyright (c) Microsoft Corporation. All rights reserved.
  3. * Version: 0.31.1(337587859b1c171314b40503171188b6cea6a32a)
  4. * Released under the MIT license
  5. * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
  6. *-----------------------------------------------------------------------------*/
  7. define("vs/basic-languages/lexon/lexon",[],()=>{
  8. var moduleExports = (() => {
  9. var __defProp = Object.defineProperty;
  10. var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
  11. var __export = (target, all) => {
  12. __markAsModule(target);
  13. for (var name in all)
  14. __defProp(target, name, { get: all[name], enumerable: true });
  15. };
  16. // src/basic-languages/lexon/lexon.ts
  17. var lexon_exports = {};
  18. __export(lexon_exports, {
  19. conf: () => conf,
  20. language: () => language
  21. });
  22. var conf = {
  23. comments: {
  24. lineComment: "COMMENT"
  25. },
  26. brackets: [["(", ")"]],
  27. autoClosingPairs: [
  28. { open: "{", close: "}" },
  29. { open: "[", close: "]" },
  30. { open: "(", close: ")" },
  31. { open: '"', close: '"' },
  32. { open: ":", close: "." }
  33. ],
  34. surroundingPairs: [
  35. { open: "{", close: "}" },
  36. { open: "[", close: "]" },
  37. { open: "(", close: ")" },
  38. { open: "`", close: "`" },
  39. { open: '"', close: '"' },
  40. { open: "'", close: "'" },
  41. { open: ":", close: "." }
  42. ],
  43. folding: {
  44. markers: {
  45. start: new RegExp("^\\s*(::\\s*|COMMENT\\s+)#region"),
  46. end: new RegExp("^\\s*(::\\s*|COMMENT\\s+)#endregion")
  47. }
  48. }
  49. };
  50. var language = {
  51. tokenPostfix: ".lexon",
  52. ignoreCase: true,
  53. keywords: [
  54. "lexon",
  55. "lex",
  56. "clause",
  57. "terms",
  58. "contracts",
  59. "may",
  60. "pay",
  61. "pays",
  62. "appoints",
  63. "into",
  64. "to"
  65. ],
  66. typeKeywords: ["amount", "person", "key", "time", "date", "asset", "text"],
  67. operators: [
  68. "less",
  69. "greater",
  70. "equal",
  71. "le",
  72. "gt",
  73. "or",
  74. "and",
  75. "add",
  76. "added",
  77. "subtract",
  78. "subtracted",
  79. "multiply",
  80. "multiplied",
  81. "times",
  82. "divide",
  83. "divided",
  84. "is",
  85. "be",
  86. "certified"
  87. ],
  88. symbols: /[=><!~?:&|+\-*\/\^%]+/,
  89. tokenizer: {
  90. root: [
  91. [/^(\s*)(comment:?(?:\s.*|))$/, ["", "comment"]],
  92. [
  93. /"/,
  94. {
  95. token: "identifier.quote",
  96. bracket: "@open",
  97. next: "@quoted_identifier"
  98. }
  99. ],
  100. [
  101. "LEX$",
  102. {
  103. token: "keyword",
  104. bracket: "@open",
  105. next: "@identifier_until_period"
  106. }
  107. ],
  108. ["LEXON", { token: "keyword", bracket: "@open", next: "@semver" }],
  109. [
  110. ":",
  111. {
  112. token: "delimiter",
  113. bracket: "@open",
  114. next: "@identifier_until_period"
  115. }
  116. ],
  117. [
  118. /[a-z_$][\w$]*/,
  119. {
  120. cases: {
  121. "@operators": "operator",
  122. "@typeKeywords": "keyword.type",
  123. "@keywords": "keyword",
  124. "@default": "identifier"
  125. }
  126. }
  127. ],
  128. { include: "@whitespace" },
  129. [/[{}()\[\]]/, "@brackets"],
  130. [/[<>](?!@symbols)/, "@brackets"],
  131. [/@symbols/, "delimiter"],
  132. [/\d*\.\d*\.\d*/, "number.semver"],
  133. [/\d*\.\d+([eE][\-+]?\d+)?/, "number.float"],
  134. [/0[xX][0-9a-fA-F]+/, "number.hex"],
  135. [/\d+/, "number"],
  136. [/[;,.]/, "delimiter"]
  137. ],
  138. quoted_identifier: [
  139. [/[^\\"]+/, "identifier"],
  140. [/"/, { token: "identifier.quote", bracket: "@close", next: "@pop" }]
  141. ],
  142. space_identifier_until_period: [
  143. [":", "delimiter"],
  144. [" ", { token: "white", next: "@identifier_rest" }]
  145. ],
  146. identifier_until_period: [
  147. { include: "@whitespace" },
  148. [":", { token: "delimiter", next: "@identifier_rest" }],
  149. [/[^\\.]+/, "identifier"],
  150. [/\./, { token: "delimiter", bracket: "@close", next: "@pop" }]
  151. ],
  152. identifier_rest: [
  153. [/[^\\.]+/, "identifier"],
  154. [/\./, { token: "delimiter", bracket: "@close", next: "@pop" }]
  155. ],
  156. semver: [
  157. { include: "@whitespace" },
  158. [":", "delimiter"],
  159. [/\d*\.\d*\.\d*/, { token: "number.semver", bracket: "@close", next: "@pop" }]
  160. ],
  161. whitespace: [[/[ \t\r\n]+/, "white"]]
  162. }
  163. };
  164. return lexon_exports;
  165. })();
  166. return moduleExports;
  167. });