207fa26d9d4b4c2d5af507fa6db04339.js 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. ace.define("ace/mode/assembly_arm32_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict";
  2. var oop = require("../lib/oop");
  3. var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
  4. var AssemblyARM32HighlightRules = function () {
  5. this.$rules = {
  6. start: [
  7. {
  8. token: 'keyword.control.assembly',
  9. regex: '\\b(?:cpsid|cpsie|cps|setend|(?:srs|rfe)(?:ia|ib|da|db|fd|ed|fa|ea)|bkpt|nop|pld|cdp2|mrc2|mrrc2|mcr2|mcrr2|ldc2|stc2|(?:add|adc|sub|sbc|rsb|rsc|mul|mla|umull|umlal|smull|smlal|mvn|and|eor|orr|bic)(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?s?|(?:(?:q|qd)?(?:add|sub)|umaal|smul(?:b|t)(?:b|t)|smulw(?:b|t)|smla(?:b|t)(?:b|t)|smlaw(?:b|t)|smlal(?:b|t)(?:b|t)|smuadx?|smladx?|smlaldx?|smusdx?|smlsdx?|smlsldx?|smmulr?|smmlar?|smmlsr?|mia|miaph|mia(?:b|t)(?:b|t)|clz|(?:s|q|sh|u|uq|uh)(?:add16|sub16|add8|sub8|addsubx|subaddx)|usad8|usada8|mrs|msr|mra|mar|cpy|tst|teq|cmp|cmn|ssat|ssat16|usat|usat16|pkhbt|pkhtb|sxth|sxtb16|sxtb|uxth|uxtb16|uxtb|sxtah|sxtab16|sxtab|uxtah|uxtab16|uxtab|rev|rev16|revsh|sel|b|bl|bx|blx|bxj|swi|svc|ldrex|strex|cdp|mrc|mrrc|mcr|mcrr|ldc|stc)(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?|ldr(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?(?:t|b|bt|sb|h|sh|d)?|str(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?(?:t|b|bt|h|d)?|(?:ldm|stm)(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?(?:ia|ib|da|db|fd|ed|fa|ea)|swp(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?b?|mov(?:t|w)?)\\b',
  10. caseInsensitive: true
  11. },
  12. {
  13. token: 'variable.parameter.register.assembly',
  14. regex: '\\b(?:r0|r1|r2|r3|r4|r5|r6|r7|r8|r9|r10|r11|r12|r13|r14|r15|fp|ip|sp|lr|pc|cpsr|spsr|c|f|s|x|lsl|lsr|asr|ror|rrx)\\b',
  15. caseInsensitive: true
  16. },
  17. {
  18. token: 'constant.character.hexadecimal.assembly',
  19. regex: '#0x[A-F0-9]+',
  20. caseInsensitive: true
  21. },
  22. {
  23. token: 'constant.character.decimal.assembly',
  24. regex: '#[0-9]+'
  25. },
  26. {
  27. token: 'string.assembly',
  28. regex: /'([^\\']|\\.)*'/
  29. },
  30. {
  31. token: 'string.assembly',
  32. regex: /"([^\\"]|\\.)*"/
  33. },
  34. {
  35. token: 'support.function.directive.assembly',
  36. regex: '(?:\.section|\.global|\.text|\.asciz|\.asciiz|\.ascii|\.align|\.byte|\.end|\.data|\.equ|\.extern|\.include)'
  37. },
  38. {
  39. token: 'entity.name.function.assembly',
  40. regex: '^\\s*%%[\\w.]+?:$'
  41. },
  42. {
  43. token: 'entity.name.function.assembly',
  44. regex: '^\\s*%\\$[\\w.]+?:$'
  45. },
  46. {
  47. token: 'entity.name.function.assembly',
  48. regex: '^[\\w.]+?:'
  49. },
  50. {
  51. token: 'entity.name.function.assembly',
  52. regex: '^[\\w.]+?\\b'
  53. },
  54. {
  55. token: 'comment.assembly',
  56. regex: '\\/\\*', next: 'comment'
  57. },
  58. {
  59. token: 'comment.assembly',
  60. regex: '(?:;|//|@).*$'
  61. }
  62. ],
  63. comment: [
  64. {
  65. token: 'comment.assembly',
  66. regex: '\\*\\/', next: 'start'
  67. },
  68. {
  69. defaultToken: 'comment'
  70. }
  71. ]
  72. };
  73. this.normalizeRules();
  74. };
  75. AssemblyARM32HighlightRules.metaData = { fileTypes: ['s'],
  76. name: 'Assembly ARM32',
  77. scopeName: 'source.assembly' };
  78. oop.inherits(AssemblyARM32HighlightRules, TextHighlightRules);
  79. exports.AssemblyARM32HighlightRules = AssemblyARM32HighlightRules;
  80. });
  81. ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict";
  82. var oop = require("../../lib/oop");
  83. var BaseFoldMode = require("./fold_mode").FoldMode;
  84. var Range = require("../../range").Range;
  85. var FoldMode = exports.FoldMode = function () { };
  86. oop.inherits(FoldMode, BaseFoldMode);
  87. (function () {
  88. this.commentBlock = function (session, row) {
  89. var re = /\S/;
  90. var line = session.getLine(row);
  91. var startLevel = line.search(re);
  92. if (startLevel == -1 || line[startLevel] != "#")
  93. return;
  94. var startColumn = line.length;
  95. var maxRow = session.getLength();
  96. var startRow = row;
  97. var endRow = row;
  98. while (++row < maxRow) {
  99. line = session.getLine(row);
  100. var level = line.search(re);
  101. if (level == -1)
  102. continue;
  103. if (line[level] != "#")
  104. break;
  105. endRow = row;
  106. }
  107. if (endRow > startRow) {
  108. var endColumn = session.getLine(endRow).length;
  109. return new Range(startRow, startColumn, endRow, endColumn);
  110. }
  111. };
  112. this.getFoldWidgetRange = function (session, foldStyle, row) {
  113. var range = this.indentationBlock(session, row);
  114. if (range)
  115. return range;
  116. range = this.commentBlock(session, row);
  117. if (range)
  118. return range;
  119. };
  120. this.getFoldWidget = function (session, foldStyle, row) {
  121. var line = session.getLine(row);
  122. var indent = line.search(/\S/);
  123. var next = session.getLine(row + 1);
  124. var prev = session.getLine(row - 1);
  125. var prevIndent = prev.search(/\S/);
  126. var nextIndent = next.search(/\S/);
  127. if (indent == -1) {
  128. session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : "";
  129. return "";
  130. }
  131. if (prevIndent == -1) {
  132. if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") {
  133. session.foldWidgets[row - 1] = "";
  134. session.foldWidgets[row + 1] = "";
  135. return "start";
  136. }
  137. }
  138. else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") {
  139. if (session.getLine(row - 2).search(/\S/) == -1) {
  140. session.foldWidgets[row - 1] = "start";
  141. session.foldWidgets[row + 1] = "";
  142. return "";
  143. }
  144. }
  145. if (prevIndent != -1 && prevIndent < indent)
  146. session.foldWidgets[row - 1] = "start";
  147. else
  148. session.foldWidgets[row - 1] = "";
  149. if (indent < nextIndent)
  150. return "start";
  151. else
  152. return "";
  153. };
  154. }).call(FoldMode.prototype);
  155. });
  156. ace.define("ace/mode/assembly_arm32",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/assembly_arm32_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){"use strict";
  157. var oop = require("../lib/oop");
  158. var TextMode = require("./text").Mode;
  159. var AssemblyARM32HighlightRules = require("./assembly_arm32_highlight_rules").AssemblyARM32HighlightRules;
  160. var FoldMode = require("./folding/coffee").FoldMode;
  161. var Mode = function () {
  162. this.HighlightRules = AssemblyARM32HighlightRules;
  163. this.foldingRules = new FoldMode();
  164. this.$behaviour = this.$defaultBehaviour;
  165. };
  166. oop.inherits(Mode, TextMode);
  167. (function () {
  168. this.lineCommentStart = [";"];
  169. this.blockComment = { start: "/*", end: "*/" };
  170. this.$id = "ace/mode/assembly_arm32";
  171. }).call(Mode.prototype);
  172. exports.Mode = Mode;
  173. }); (function() {
  174. ace.require(["ace/mode/assembly_arm32"], function(m) {
  175. if (typeof module == "object" && typeof exports == "object" && module) {
  176. module.exports = m;
  177. }
  178. });
  179. })();