lua.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  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/lua/lua.ts
  8. var conf = {
  9. comments: {
  10. lineComment: "--",
  11. blockComment: ["--[[", "]]"]
  12. },
  13. brackets: [
  14. ["{", "}"],
  15. ["[", "]"],
  16. ["(", ")"]
  17. ],
  18. autoClosingPairs: [
  19. { open: "{", close: "}" },
  20. { open: "[", close: "]" },
  21. { open: "(", close: ")" },
  22. { open: '"', close: '"' },
  23. { open: "'", close: "'" }
  24. ],
  25. surroundingPairs: [
  26. { open: "{", close: "}" },
  27. { open: "[", close: "]" },
  28. { open: "(", close: ")" },
  29. { open: '"', close: '"' },
  30. { open: "'", close: "'" }
  31. ]
  32. };
  33. var language = {
  34. defaultToken: "",
  35. tokenPostfix: ".lua",
  36. keywords: [
  37. "and",
  38. "break",
  39. "do",
  40. "else",
  41. "elseif",
  42. "end",
  43. "false",
  44. "for",
  45. "function",
  46. "goto",
  47. "if",
  48. "in",
  49. "local",
  50. "nil",
  51. "not",
  52. "or",
  53. "repeat",
  54. "return",
  55. "then",
  56. "true",
  57. "until",
  58. "while"
  59. ],
  60. brackets: [
  61. { token: "delimiter.bracket", open: "{", close: "}" },
  62. { token: "delimiter.array", open: "[", close: "]" },
  63. { token: "delimiter.parenthesis", open: "(", close: ")" }
  64. ],
  65. operators: [
  66. "+",
  67. "-",
  68. "*",
  69. "/",
  70. "%",
  71. "^",
  72. "#",
  73. "==",
  74. "~=",
  75. "<=",
  76. ">=",
  77. "<",
  78. ">",
  79. "=",
  80. ";",
  81. ":",
  82. ",",
  83. ".",
  84. "..",
  85. "..."
  86. ],
  87. symbols: /[=><!~?:&|+\-*\/\^%]+/,
  88. escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
  89. tokenizer: {
  90. root: [
  91. [
  92. /[a-zA-Z_]\w*/,
  93. {
  94. cases: {
  95. "@keywords": { token: "keyword.$0" },
  96. "@default": "identifier"
  97. }
  98. }
  99. ],
  100. { include: "@whitespace" },
  101. [/(,)(\s*)([a-zA-Z_]\w*)(\s*)(:)(?!:)/, ["delimiter", "", "key", "", "delimiter"]],
  102. [/({)(\s*)([a-zA-Z_]\w*)(\s*)(:)(?!:)/, ["@brackets", "", "key", "", "delimiter"]],
  103. [/[{}()\[\]]/, "@brackets"],
  104. [
  105. /@symbols/,
  106. {
  107. cases: {
  108. "@operators": "delimiter",
  109. "@default": ""
  110. }
  111. }
  112. ],
  113. [/\d*\.\d+([eE][\-+]?\d+)?/, "number.float"],
  114. [/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/, "number.hex"],
  115. [/\d+?/, "number"],
  116. [/[;,.]/, "delimiter"],
  117. [/"([^"\\]|\\.)*$/, "string.invalid"],
  118. [/'([^'\\]|\\.)*$/, "string.invalid"],
  119. [/"/, "string", '@string."'],
  120. [/'/, "string", "@string.'"]
  121. ],
  122. whitespace: [
  123. [/[ \t\r\n]+/, ""],
  124. [/--\[([=]*)\[/, "comment", "@comment.$1"],
  125. [/--.*$/, "comment"]
  126. ],
  127. comment: [
  128. [/[^\]]+/, "comment"],
  129. [
  130. /\]([=]*)\]/,
  131. {
  132. cases: {
  133. "$1==$S2": { token: "comment", next: "@pop" },
  134. "@default": "comment"
  135. }
  136. }
  137. ],
  138. [/./, "comment"]
  139. ],
  140. string: [
  141. [/[^\\"']+/, "string"],
  142. [/@escapes/, "string.escape"],
  143. [/\\./, "string.escape.invalid"],
  144. [
  145. /["']/,
  146. {
  147. cases: {
  148. "$#==$S2": { token: "string", next: "@pop" },
  149. "@default": "string"
  150. }
  151. }
  152. ]
  153. ]
  154. }
  155. };
  156. export {
  157. conf,
  158. language
  159. };