| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462 | ace.define("ace/mode/csound_preprocessor_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 CsoundPreprocessorHighlightRules = function(embeddedRulePrefix) {    this.embeddedRulePrefix = embeddedRulePrefix === undefined ? "" : embeddedRulePrefix;    this.semicolonComments = {        token : "comment.line.semicolon.csound",        regex : ";.*$"    };    this.comments = [        {            token : "punctuation.definition.comment.begin.csound",            regex : "/\\*",            push  : [                {                    token : "punctuation.definition.comment.end.csound",                    regex : "\\*/",                    next  : "pop"                }, {                    defaultToken: "comment.block.csound"                }            ]        }, {            token : "comment.line.double-slash.csound",            regex : "//.*$"        },        this.semicolonComments    ];    this.macroUses = [        {            token : ["entity.name.function.preprocessor.csound", "punctuation.definition.macro-parameter-value-list.begin.csound"],            regex : /(\$[A-Z_a-z]\w*\.?)(\()/,            next  : "macro parameter value list"        }, {            token : "entity.name.function.preprocessor.csound",            regex : /\$[A-Z_a-z]\w*(?:\.|\b)/        }    ];    this.numbers = [        {            token : "constant.numeric.float.csound",            regex : /(?:\d+[Ee][+-]?\d+)|(?:\d+\.\d*|\d*\.\d+)(?:[Ee][+-]?\d+)?/        }, {            token : ["storage.type.number.csound", "constant.numeric.integer.hexadecimal.csound"],            regex : /(0[Xx])([0-9A-Fa-f]+)/        }, {            token : "constant.numeric.integer.decimal.csound",            regex : /\d+/        }    ];    this.bracedStringContents = [        {            token : "constant.character.escape.csound",            regex : /\\(?:[\\abnrt"]|[0-7]{1,3})/        },        {            token : "constant.character.placeholder.csound",            regex : /%[#0\- +]*\d*(?:\.\d+)?[diuoxXfFeEgGaAcs]/        }, {            token : "constant.character.escape.csound",            regex : /%%/        }    ];    this.quotedStringContents = [        this.macroUses,        this.bracedStringContents    ];    var start = [        this.comments,        {            token : "keyword.preprocessor.csound",            regex : /#(?:e(?:nd(?:if)?|lse)\b|##)|@@?[ \t]*\d+/        }, {            token : "keyword.preprocessor.csound",            regex : /#include/,            push  : [                this.comments,                {                    token : "string.csound",                    regex : /([^ \t])(?:.*?\1)/,                    next  : "pop"                }            ]        }, {            token : "keyword.preprocessor.csound",            regex : /#includestr/,            push  : [                this.comments,                {                    token : "string.csound",                    regex : /([^ \t])(?:.*?\1)/,                    next  : "pop"                }            ]        }, {            token : "keyword.preprocessor.csound",            regex : /#[ \t]*define/,            next  : "define directive"        }, {            token : "keyword.preprocessor.csound",            regex : /#(?:ifn?def|undef)\b/,            next  : "macro directive"        },        this.macroUses    ];    this.$rules = {        "start": start,        "define directive": [            this.comments,            {                token : "entity.name.function.preprocessor.csound",                regex : /[A-Z_a-z]\w*/            }, {                token : "punctuation.definition.macro-parameter-name-list.begin.csound",                regex : /\(/,                next  : "macro parameter name list"            }, {                token : "punctuation.definition.macro.begin.csound",                regex : /#/,                next  : "macro body"            }        ],        "macro parameter name list": [            {                token : "variable.parameter.preprocessor.csound",                regex : /[A-Z_a-z]\w*/            }, {                token : "punctuation.definition.macro-parameter-name-list.end.csound",                regex : /\)/,                next  : "define directive"            }        ],        "macro body": [            {                token : "constant.character.escape.csound",                regex : /\\#/            }, {                token : "punctuation.definition.macro.end.csound",                regex : /#/,                next  : "start"            },            start        ],        "macro directive": [            this.comments,            {                token : "entity.name.function.preprocessor.csound",                regex : /[A-Z_a-z]\w*/,                next  : "start"            }        ],        "macro parameter value list": [            {                token : "punctuation.definition.macro-parameter-value-list.end.csound",                regex : /\)/,                next  : "start"            }, {                token : "punctuation.definition.string.begin.csound",                regex : /"/,                next  : "macro parameter value quoted string"            }, this.pushRule({                token : "punctuation.macro-parameter-value-parenthetical.begin.csound",                regex : /\(/,                next  : "macro parameter value parenthetical"            }), {                token : "punctuation.macro-parameter-value-separator.csound",                regex : "[#']"            }        ],        "macro parameter value quoted string": [            {                token : "constant.character.escape.csound",                regex : /\\[#'()]/            }, {                token : "invalid.illegal.csound",                regex : /[#'()]/            }, {                token : "punctuation.definition.string.end.csound",                regex : /"/,                next  : "macro parameter value list"            },            this.quotedStringContents,            {                defaultToken: "string.quoted.csound"            }        ],        "macro parameter value parenthetical": [            {                token : "constant.character.escape.csound",                regex : /\\\)/            }, this.popRule({                token : "punctuation.macro-parameter-value-parenthetical.end.csound",                regex : /\)/            }), this.pushRule({                token : "punctuation.macro-parameter-value-parenthetical.begin.csound",                regex : /\(/,                next  : "macro parameter value parenthetical"            }),            start        ]    };};oop.inherits(CsoundPreprocessorHighlightRules, TextHighlightRules);(function() {    this.pushRule = function(params) {        if (Array.isArray(params.next)) {            for (var i = 0; i < params.next.length; i++) {                params.next[i] = this.embeddedRulePrefix + params.next[i];            }        }        return {            regex : params.regex, onMatch: function(value, currentState, stack, line) {                if (stack.length === 0)                    stack.push(currentState);                if (Array.isArray(params.next)) {                    for (var i = 0; i < params.next.length; i++) {                        stack.push(params.next[i]);                    }                } else {                    stack.push(params.next);                }                this.next = stack[stack.length - 1];                return params.token;            },            get next() { return Array.isArray(params.next) ? params.next[params.next.length - 1] : params.next; },            set next(next) {                if (!Array.isArray(params.next)) {                    params.next = next;                }            },            get token() { return params.token; }        };    };    this.popRule = function(params) {        if (params.next) {            params.next = this.embeddedRulePrefix + params.next;        }        return {            regex : params.regex, onMatch: function(value, currentState, stack, line) {                stack.pop();                if (params.next) {                    stack.push(params.next);                    this.next = stack[stack.length - 1];                } else {                    this.next = stack.length > 1 ? stack[stack.length - 1] : stack.pop();                }                return params.token;            }        };    };}).call(CsoundPreprocessorHighlightRules.prototype);exports.CsoundPreprocessorHighlightRules = CsoundPreprocessorHighlightRules;});ace.define("ace/mode/csound_score_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/csound_preprocessor_highlight_rules"], function(require, exports, module) {"use strict";var oop = require("../lib/oop");var CsoundPreprocessorHighlightRules = require("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules;var CsoundScoreHighlightRules = function(embeddedRulePrefix) {    CsoundPreprocessorHighlightRules.call(this, embeddedRulePrefix);    this.quotedStringContents.push({        token : "invalid.illegal.csound-score",        regex : /[^"]*$/    });    var start = this.$rules.start;    start.push(        {            token : "keyword.control.csound-score",            regex : /[abCdefiqstvxy]/        }, {            token : "invalid.illegal.csound-score",            regex : /w/        }, {            token : "constant.numeric.language.csound-score",            regex : /z/        }, {            token : ["keyword.control.csound-score", "constant.numeric.integer.decimal.csound-score"],            regex : /([nNpP][pP])(\d+)/        }, {            token : "keyword.other.csound-score",            regex : /[mn]/,            push  : [                {                    token : "empty",                    regex : /$/,                    next  : "pop"                },                this.comments,                {                    token : "entity.name.label.csound-score",                    regex : /[A-Z_a-z]\w*/                }            ]        }, {            token : "keyword.preprocessor.csound-score",            regex : /r\b/,            next  : "repeat section"        },        this.numbers,        {            token : "keyword.operator.csound-score",            regex : "[!+\\-*/^%&|<>#~.]"        },        this.pushRule({            token : "punctuation.definition.string.begin.csound-score",            regex : /"/,            next  : "quoted string"        }),        this.pushRule({            token : "punctuation.braced-loop.begin.csound-score",            regex : /{/,            next  : "loop after left brace"        })    );    this.addRules({        "repeat section": [            {                token : "empty",                regex : /$/,                next  : "start"            },            this.comments,            {                token : "constant.numeric.integer.decimal.csound-score",                regex : /\d+/,                next  : "repeat section before label"            }        ],        "repeat section before label": [            {                token : "empty",                regex : /$/,                next  : "start"            },            this.comments,            {                token : "entity.name.label.csound-score",                regex : /[A-Z_a-z]\w*/,                next  : "start"            }        ],        "quoted string": [            this.popRule({                token : "punctuation.definition.string.end.csound-score",                regex : /"/            }),            this.quotedStringContents,            {                defaultToken: "string.quoted.csound-score"            }        ],        "loop after left brace": [            this.popRule({                token : "constant.numeric.integer.decimal.csound-score",                regex : /\d+/,                next  : "loop after repeat count"            }),            this.comments,            {                token : "invalid.illegal.csound",                regex : /\S.*/            }        ],        "loop after repeat count": [            this.popRule({                token : "entity.name.function.preprocessor.csound-score",                regex : /[A-Z_a-z]\w*\b/,                next  : "loop after macro name"            }),            this.comments,            {                token : "invalid.illegal.csound",                regex : /\S.*/            }        ],        "loop after macro name": [            start,            this.popRule({                token : "punctuation.braced-loop.end.csound-score",                regex : /}/            })        ]    });    this.normalizeRules();};oop.inherits(CsoundScoreHighlightRules, CsoundPreprocessorHighlightRules);exports.CsoundScoreHighlightRules = CsoundScoreHighlightRules;});ace.define("ace/mode/csound_score",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/csound_score_highlight_rules"], function(require, exports, module) {"use strict";var oop = require("../lib/oop");var TextMode = require("./text").Mode;var CsoundScoreHighlightRules = require("./csound_score_highlight_rules").CsoundScoreHighlightRules;var Mode = function() {    this.HighlightRules = CsoundScoreHighlightRules;};oop.inherits(Mode, TextMode);(function() {    this.lineCommentStart = ";";    this.blockComment = {start: "/*", end: "*/"};    this.$id = "ace/mode/csound_score";}).call(Mode.prototype);exports.Mode = Mode;});                (function() {                    ace.require(["ace/mode/csound_score"], function(m) {                        if (typeof module == "object" && typeof exports == "object" && module) {                            module.exports = m;                        }                    });                })();            
 |