mips.js 4.2 KB

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