mips.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  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/mips/mips",[],()=>{
  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/mips/mips.ts
  17. var mips_exports = {};
  18. __export(mips_exports, {
  19. conf: () => conf,
  20. language: () => language
  21. });
  22. var conf = {
  23. wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#%\^\&\*\(\)\=\$\-\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
  24. comments: {
  25. blockComment: ["###", "###"],
  26. lineComment: "#"
  27. },
  28. folding: {
  29. markers: {
  30. start: new RegExp("^\\s*#region\\b"),
  31. end: new RegExp("^\\s*#endregion\\b")
  32. }
  33. }
  34. };
  35. var language = {
  36. defaultToken: "",
  37. ignoreCase: false,
  38. tokenPostfix: ".mips",
  39. regEx: /\/(?!\/\/)(?:[^\/\\]|\\.)*\/[igm]*/,
  40. keywords: [
  41. ".data",
  42. ".text",
  43. "syscall",
  44. "trap",
  45. "add",
  46. "addu",
  47. "addi",
  48. "addiu",
  49. "and",
  50. "andi",
  51. "div",
  52. "divu",
  53. "mult",
  54. "multu",
  55. "nor",
  56. "or",
  57. "ori",
  58. "sll",
  59. "slv",
  60. "sra",
  61. "srav",
  62. "srl",
  63. "srlv",
  64. "sub",
  65. "subu",
  66. "xor",
  67. "xori",
  68. "lhi",
  69. "lho",
  70. "lhi",
  71. "llo",
  72. "slt",
  73. "slti",
  74. "sltu",
  75. "sltiu",
  76. "beq",
  77. "bgtz",
  78. "blez",
  79. "bne",
  80. "j",
  81. "jal",
  82. "jalr",
  83. "jr",
  84. "lb",
  85. "lbu",
  86. "lh",
  87. "lhu",
  88. "lw",
  89. "li",
  90. "la",
  91. "sb",
  92. "sh",
  93. "sw",
  94. "mfhi",
  95. "mflo",
  96. "mthi",
  97. "mtlo",
  98. "move"
  99. ],
  100. symbols: /[\.,\:]+/,
  101. escapes: /\\(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
  102. tokenizer: {
  103. root: [
  104. [/\$[a-zA-Z_]\w*/, "variable.predefined"],
  105. [
  106. /[.a-zA-Z_]\w*/,
  107. {
  108. cases: {
  109. this: "variable.predefined",
  110. "@keywords": { token: "keyword.$0" },
  111. "@default": ""
  112. }
  113. }
  114. ],
  115. [/[ \t\r\n]+/, ""],
  116. [/#.*$/, "comment"],
  117. ["///", { token: "regexp", next: "@hereregexp" }],
  118. [/^(\s*)(@regEx)/, ["", "regexp"]],
  119. [/(\,)(\s*)(@regEx)/, ["delimiter", "", "regexp"]],
  120. [/(\:)(\s*)(@regEx)/, ["delimiter", "", "regexp"]],
  121. [/@symbols/, "delimiter"],
  122. [/\d+[eE]([\-+]?\d+)?/, "number.float"],
  123. [/\d+\.\d+([eE][\-+]?\d+)?/, "number.float"],
  124. [/0[xX][0-9a-fA-F]+/, "number.hex"],
  125. [/0[0-7]+(?!\d)/, "number.octal"],
  126. [/\d+/, "number"],
  127. [/[,.]/, "delimiter"],
  128. [/"""/, "string", '@herestring."""'],
  129. [/'''/, "string", "@herestring.'''"],
  130. [
  131. /"/,
  132. {
  133. cases: {
  134. "@eos": "string",
  135. "@default": { token: "string", next: '@string."' }
  136. }
  137. }
  138. ],
  139. [
  140. /'/,
  141. {
  142. cases: {
  143. "@eos": "string",
  144. "@default": { token: "string", next: "@string.'" }
  145. }
  146. }
  147. ]
  148. ],
  149. string: [
  150. [/[^"'\#\\]+/, "string"],
  151. [/@escapes/, "string.escape"],
  152. [/\./, "string.escape.invalid"],
  153. [/\./, "string.escape.invalid"],
  154. [
  155. /#{/,
  156. {
  157. cases: {
  158. '$S2=="': {
  159. token: "string",
  160. next: "root.interpolatedstring"
  161. },
  162. "@default": "string"
  163. }
  164. }
  165. ],
  166. [
  167. /["']/,
  168. {
  169. cases: {
  170. "$#==$S2": { token: "string", next: "@pop" },
  171. "@default": "string"
  172. }
  173. }
  174. ],
  175. [/#/, "string"]
  176. ],
  177. herestring: [
  178. [
  179. /("""|''')/,
  180. {
  181. cases: {
  182. "$1==$S2": { token: "string", next: "@pop" },
  183. "@default": "string"
  184. }
  185. }
  186. ],
  187. [/[^#\\'"]+/, "string"],
  188. [/['"]+/, "string"],
  189. [/@escapes/, "string.escape"],
  190. [/\./, "string.escape.invalid"],
  191. [/#{/, { token: "string.quote", next: "root.interpolatedstring" }],
  192. [/#/, "string"]
  193. ],
  194. comment: [
  195. [/[^#]+/, "comment"],
  196. [/#/, "comment"]
  197. ],
  198. hereregexp: [
  199. [/[^\\\/#]+/, "regexp"],
  200. [/\\./, "regexp"],
  201. [/#.*$/, "comment"],
  202. ["///[igm]*", { token: "regexp", next: "@pop" }],
  203. [/\//, "regexp"]
  204. ]
  205. }
  206. };
  207. return mips_exports;
  208. })();
  209. return moduleExports;
  210. });