pascal.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  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. // src/basic-languages/pascal/pascal.ts
  8. var conf = {
  9. wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
  10. comments: {
  11. lineComment: "//",
  12. blockComment: ["{", "}"]
  13. },
  14. brackets: [
  15. ["{", "}"],
  16. ["[", "]"],
  17. ["(", ")"],
  18. ["<", ">"]
  19. ],
  20. autoClosingPairs: [
  21. { open: "{", close: "}" },
  22. { open: "[", close: "]" },
  23. { open: "(", close: ")" },
  24. { open: "<", close: ">" },
  25. { open: "'", close: "'" }
  26. ],
  27. surroundingPairs: [
  28. { open: "{", close: "}" },
  29. { open: "[", close: "]" },
  30. { open: "(", close: ")" },
  31. { open: "<", close: ">" },
  32. { open: "'", close: "'" }
  33. ],
  34. folding: {
  35. markers: {
  36. start: new RegExp("^\\s*\\{\\$REGION(\\s\\'.*\\')?\\}"),
  37. end: new RegExp("^\\s*\\{\\$ENDREGION\\}")
  38. }
  39. }
  40. };
  41. var language = {
  42. defaultToken: "",
  43. tokenPostfix: ".pascal",
  44. ignoreCase: true,
  45. brackets: [
  46. { open: "{", close: "}", token: "delimiter.curly" },
  47. { open: "[", close: "]", token: "delimiter.square" },
  48. { open: "(", close: ")", token: "delimiter.parenthesis" },
  49. { open: "<", close: ">", token: "delimiter.angle" }
  50. ],
  51. keywords: [
  52. "absolute",
  53. "abstract",
  54. "all",
  55. "and_then",
  56. "array",
  57. "as",
  58. "asm",
  59. "attribute",
  60. "begin",
  61. "bindable",
  62. "case",
  63. "class",
  64. "const",
  65. "contains",
  66. "default",
  67. "div",
  68. "else",
  69. "end",
  70. "except",
  71. "exports",
  72. "external",
  73. "far",
  74. "file",
  75. "finalization",
  76. "finally",
  77. "forward",
  78. "generic",
  79. "goto",
  80. "if",
  81. "implements",
  82. "import",
  83. "in",
  84. "index",
  85. "inherited",
  86. "initialization",
  87. "interrupt",
  88. "is",
  89. "label",
  90. "library",
  91. "mod",
  92. "module",
  93. "name",
  94. "near",
  95. "not",
  96. "object",
  97. "of",
  98. "on",
  99. "only",
  100. "operator",
  101. "or_else",
  102. "otherwise",
  103. "override",
  104. "package",
  105. "packed",
  106. "pow",
  107. "private",
  108. "program",
  109. "protected",
  110. "public",
  111. "published",
  112. "interface",
  113. "implementation",
  114. "qualified",
  115. "read",
  116. "record",
  117. "resident",
  118. "requires",
  119. "resourcestring",
  120. "restricted",
  121. "segment",
  122. "set",
  123. "shl",
  124. "shr",
  125. "specialize",
  126. "stored",
  127. "strict",
  128. "then",
  129. "threadvar",
  130. "to",
  131. "try",
  132. "type",
  133. "unit",
  134. "uses",
  135. "var",
  136. "view",
  137. "virtual",
  138. "dynamic",
  139. "overload",
  140. "reintroduce",
  141. "with",
  142. "write",
  143. "xor",
  144. "true",
  145. "false",
  146. "procedure",
  147. "function",
  148. "constructor",
  149. "destructor",
  150. "property",
  151. "break",
  152. "continue",
  153. "exit",
  154. "abort",
  155. "while",
  156. "do",
  157. "for",
  158. "raise",
  159. "repeat",
  160. "until"
  161. ],
  162. typeKeywords: [
  163. "boolean",
  164. "double",
  165. "byte",
  166. "integer",
  167. "shortint",
  168. "char",
  169. "longint",
  170. "float",
  171. "string"
  172. ],
  173. operators: [
  174. "=",
  175. ">",
  176. "<",
  177. "<=",
  178. ">=",
  179. "<>",
  180. ":",
  181. ":=",
  182. "and",
  183. "or",
  184. "+",
  185. "-",
  186. "*",
  187. "/",
  188. "@",
  189. "&",
  190. "^",
  191. "%"
  192. ],
  193. symbols: /[=><:@\^&|+\-*\/\^%]+/,
  194. tokenizer: {
  195. root: [
  196. [
  197. /[a-zA-Z_][\w]*/,
  198. {
  199. cases: {
  200. "@keywords": { token: "keyword.$0" },
  201. "@default": "identifier"
  202. }
  203. }
  204. ],
  205. { include: "@whitespace" },
  206. [/[{}()\[\]]/, "@brackets"],
  207. [/[<>](?!@symbols)/, "@brackets"],
  208. [
  209. /@symbols/,
  210. {
  211. cases: {
  212. "@operators": "delimiter",
  213. "@default": ""
  214. }
  215. }
  216. ],
  217. [/\d*\.\d+([eE][\-+]?\d+)?/, "number.float"],
  218. [/\$[0-9a-fA-F]{1,16}/, "number.hex"],
  219. [/\d+/, "number"],
  220. [/[;,.]/, "delimiter"],
  221. [/'([^'\\]|\\.)*$/, "string.invalid"],
  222. [/'/, "string", "@string"],
  223. [/'[^\\']'/, "string"],
  224. [/'/, "string.invalid"],
  225. [/\#\d+/, "string"]
  226. ],
  227. comment: [
  228. [/[^\*\}]+/, "comment"],
  229. [/\}/, "comment", "@pop"],
  230. [/[\{]/, "comment"]
  231. ],
  232. string: [
  233. [/[^\\']+/, "string"],
  234. [/\\./, "string.escape.invalid"],
  235. [/'/, { token: "string.quote", bracket: "@close", next: "@pop" }]
  236. ],
  237. whitespace: [
  238. [/[ \t\r\n]+/, "white"],
  239. [/\{/, "comment", "@comment"],
  240. [/\/\/.*$/, "comment"]
  241. ]
  242. }
  243. };
  244. export {
  245. conf,
  246. language
  247. };