ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var DocCommentHighlightRules = function () { this.$rules = { "start": [{ token: "comment.doc.tag", regex: "@[\\w\\d_]+" // TODO: fix email addresses }, DocCommentHighlightRules.getTagRule(), { defaultToken: "comment.doc", caseInsensitive: true }] }; }; oop.inherits(DocCommentHighlightRules, TextHighlightRules); DocCommentHighlightRules.getTagRule = function (start) { return { token: "comment.doc.tag.storage.type", regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; DocCommentHighlightRules.getStartRule = function (start) { return { token: "comment.doc", regex: "\\/\\*(?=\\*)", next: start }; }; DocCommentHighlightRules.getEndRule = function (start) { return { token: "comment.doc", regex: "\\*\\/", next: start }; }; exports.DocCommentHighlightRules = DocCommentHighlightRules; }); ace.define("ace/mode/sac_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var sacHighlightRules = function () { var keywordControls = ("break|continue|do|else|for|if|" + "return|with|while|use|class|all|void"); var storageType = ("bool|char|complex|double|float|" + "byte|int|short|long|longlong|" + "ubyte|uint|ushort|ulong|ulonglong|" + "struct|typedef"); var storageModifiers = ("inline|external|specialize"); var keywordOperators = ("step|width"); var builtinConstants = ("true|false"); var keywordMapper = this.$keywords = this.createKeywordMapper({ "keyword.control": keywordControls, "storage.type": storageType, "storage.modifier": storageModifiers, "keyword.operator": keywordOperators, "constant.language": builtinConstants }, "identifier"); var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; var escapeRe = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source; var formatRe = "%" + /(\d+\$)?/.source // field (argument #) + /[#0\- +']*/.source // flags + /[,;:_]?/.source // separator character (AltiVec) + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type this.$rules = { "start": [ { token: "comment", regex: "//$", next: "start" }, { token: "comment", regex: "//", next: "singleLineComment" }, DocCommentHighlightRules.getStartRule("doc-start"), { token: "comment", regex: "\\/\\*", next: "comment" }, { token: "string", regex: "'(?:" + escapeRe + "|.)?'" }, { token: "string.start", regex: '"', stateName: "qqstring", next: [ { token: "string", regex: /\\\s*$/, next: "qqstring" }, { token: "constant.language.escape", regex: escapeRe }, { token: "constant.language.escape", regex: formatRe }, { token: "string.end", regex: '"|$', next: "start" }, { defaultToken: "string" } ] }, { token: "string.start", regex: 'R"\\(', stateName: "rawString", next: [ { token: "string.end", regex: '\\)"', next: "start" }, { defaultToken: "string" } ] }, { token: "constant.numeric", regex: "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" }, { token: "constant.numeric", regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" }, { token: "keyword", regex: "#\\s*(?:include|import|pragma|line|define|undef)\\b", next: "directive" }, { token: "keyword", regex: "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" }, { token: "support.function", regex: "fold|foldfix|genarray|modarray|propagate" }, { token: keywordMapper, regex: "[a-zA-Z_$][a-zA-Z0-9_$]*" }, { token: "keyword.operator", regex: /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ }, { token: "punctuation.operator", regex: "\\?|\\:|\\,|\\;|\\." }, { token: "paren.lparen", regex: "[[({]" }, { token: "paren.rparen", regex: "[\\])}]" }, { token: "text", regex: "\\s+" } ], "comment": [ { token: "comment", regex: "\\*\\/", next: "start" }, { defaultToken: "comment" } ], "singleLineComment": [ { token: "comment", regex: /\\$/, next: "singleLineComment" }, { token: "comment", regex: /$/, next: "start" }, { defaultToken: "comment" } ], "directive": [ { token: "constant.other.multiline", regex: /\\/ }, { token: "constant.other.multiline", regex: /.*\\/ }, { token: "constant.other", regex: "\\s*<.+?>", next: "start" }, { token: "constant.other", regex: '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', next: "start" }, { token: "constant.other", regex: "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", next: "start" }, { token: "constant.other", regex: /[^\\\/]+/, next: "start" } ] }; this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); this.normalizeRules(); }; oop.inherits(sacHighlightRules, TextHighlightRules); exports.sacHighlightRules = sacHighlightRules; }); ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); (function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } var fw = this._getFoldWidgetBase(session, foldStyle, row); if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart return fw; }; this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; if (match[1]) return this.openingBracketBlock(session, match[1], row, i); var range = session.getCommentFoldRange(row, i + match[0].length, 1); if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); } else if (foldStyle != "all") range = null; } return range; } if (foldStyle === "markbegin") return; var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; if (match[1]) return this.closingBracketBlock(session, match[1], row, i); return session.getCommentFoldRange(row, i, -1); } }; this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; var startColumn = line.length; row = row + 1; var endRow = row; var maxRow = session.getLength(); while (++row < maxRow) { line = session.getLine(row); var indent = line.search(/\S/); if (indent === -1) continue; if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); if (subRange) { if (subRange.start.row <= startRow) { break; } else if (subRange.isMultiLine()) { row = subRange.end.row; } else if (startIndent == indent) { break; } } endRow = row; } return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); if (!m) continue; if (m[1]) depth--; else depth++; if (!depth) break; } var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; }).call(FoldMode.prototype); }); ace.define("ace/mode/sac",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sac_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var SaCHighlightRules = require("./sac_highlight_rules").sacHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; var Mode = function () { this.HighlightRules = SaCHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); (function () { this.lineCommentStart = "//"; this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/sac"; }).call(Mode.prototype); exports.Mode = Mode; }); (function() { ace.require(["ace/mode/sac"], function(m) { if (typeof module == "object" && typeof exports == "object" && module) { module.exports = m; } }); })();