1(function(a){if(typeof exports=="object"&&typeof module=="object")a(require("../../lib/codemirror"));else if(typeof define=="function"&&define.amd)define(["../../lib/codemirror"],a);else a(CodeMirror)})(function(a){"use strict";a.defineMode("ebnf",function(b){var c={slash:0,parenthesis:1};var d={comment:0,_string:1,characterClass:2};var e=null;if(b.bracesMode)e=a.getMode(b,b.bracesMode);return{startState:function(){return{stringType:null,commentType:null,braced:0,lhs:true,localState:null,stack:[],inDefinition:false}},token:function(b,f){if(!b)return;if(f.stack.length===0){if(b.peek()=='"'||b.peek()=="'"){f.stringType=b.peek();b.next();f.stack.unshift(d._string)}else if(b.match(/^\/\*/)){f.stack.unshift(d.comment);f.commentType=c.slash}else if(b.match(/^\(\*/)){f.stack.unshift(d.comment);f.commentType=c.parenthesis}}switch(f.stack[0]){case d._string:while(f.stack[0]===d._string&&!b.eol()){if(b.peek()===f.stringType){b.next();f.stack.shift()}else if(b.peek()==="\\"){b.next();b.next()}else{b.match(/^.[^\\\"\']*/)}}return f.lhs?"property string":"string";case d.comment:while(f.stack[0]===d.comment&&!b.eol()){if(f.commentType===c.slash&&b.match(/\*\//)){f.stack.shift();f.commentType=null}else if(f.commentType===c.parenthesis&&b.match(/\*\)/)){f.stack.shift();f.commentType=null}else{b.match(/^.[^\*]*/)}}return"comment";case d.characterClass:while(f.stack[0]===d.characterClass&&!b.eol()){if(!(b.match(/^[^\]\\]+/)||b.match(/^\\./))){f.stack.shift()}}return"operator"}var g=b.peek();if(e!==null&&(f.braced||g==="{")){if(f.localState===null)f.localState=a.startState(e);var h=e.token(b,f.localState),i=b.current();if(!h){for(var j=0;j<i.length;j++){if(i[j]==="{"){if(f.braced===0){h="matchingbracket"}f.braced++}else if(i[j]==="}"){f.braced--;if(f.braced===0){h="matchingbracket"}}}}return h}switch(g){case"[":b.next();f.stack.unshift(d.characterClass);return"bracket";case":":case"|":case";":b.next();return"operator";case"%":if(b.match("%%")){return"header"}else if(b.match(/[%][A-Za-z]+/)){return"keyword"}else if(b.match(/[%][}]/)){return"matchingbracket"}break;case"/":if(b.match(/[\/][A-Za-z]+/)){return"keyword"}case"\\":if(b.match(/[\][a-z]+/)){return"string-2"}case".":if(b.match(".")){return"atom"}case"*":case"-":case"+":case"^":if(b.match(g)){return"atom"}case"$":if(b.match("$$")){return"builtin"}else if(b.match(/[$][0-9]+/)){return"variable-3"}case"<":if(b.match(/<<[a-zA-Z_]+>>/)){return"builtin"}}if(b.match(/^\/\//)){b.skipToEnd();return"comment"}else if(b.match(/return/)){return"operator"}else if(b.match(/^[a-zA-Z_][a-zA-Z0-9_]*/)){if(b.match(/(?=[\(.])/)){return"variable"}else if(b.match(/(?=[\s\n]*[:=])/)){return"def"}return"variable-2"}else if(["[","]","(",")"].indexOf(b.peek())!=-1){b.next();return"bracket"}else if(!b.eatSpace()){b.next()}return null}}});a.defineMIME("text/x-ebnf","ebnf")});
2//# sourceMappingURL=ebnf.min.js.map