Path: blob/master/web-gui/buildyourownbotnet/assets/js/codemirror/mode/pegjs/pegjs.js
1294 views
CodeMirror.defineMode("pegjs", function (config) {1var jsMode = CodeMirror.getMode(config, "javascript");23function identifier(stream) {4return stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);5}67return {8startState: function () {9return {10inString: false,11stringType: null,12inComment: false,13inChracterClass: false,14braced: 0,15lhs: true,16localState: null17};18},19token: function (stream, state) {20if (stream)2122//check for state changes23if (!state.inString && !state.inComment && ((stream.peek() == '"') || (stream.peek() == "'"))) {24state.stringType = stream.peek();25stream.next(); // Skip quote26state.inString = true; // Update state27}28if (!state.inString && !state.inComment && stream.match(/^\/\*/)) {29state.inComment = true;30}3132//return state33if (state.inString) {34while (state.inString && !stream.eol()) {35if (stream.peek() === state.stringType) {36stream.next(); // Skip quote37state.inString = false; // Clear flag38} else if (stream.peek() === '\\') {39stream.next();40stream.next();41} else {42stream.match(/^.[^\\\"\']*/);43}44}45return state.lhs ? "property string" : "string"; // Token style46} else if (state.inComment) {47while (state.inComment && !stream.eol()) {48if (stream.match(/\*\//)) {49state.inComment = false; // Clear flag50} else {51stream.match(/^.[^\*]*/);52}53}54return "comment";55} else if (state.inChracterClass) {56while (state.inChracterClass && !stream.eol()) {57if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) {58state.inChracterClass = false;59}60}61} else if (stream.peek() === '[') {62stream.next();63state.inChracterClass = true;64return 'bracket';65} else if (stream.match(/^\/\//)) {66stream.skipToEnd();67return "comment";68} else if (state.braced || stream.peek() === '{') {69if (state.localState === null) {70state.localState = jsMode.startState();71}72var token = jsMode.token(stream, state.localState);73var text = stream.current();74if (!token) {75for (var i = 0; i < text.length; i++) {76if (text[i] === '{') {77state.braced++;78} else if (text[i] === '}') {79state.braced--;80}81};82}83return token;84} else if (identifier(stream)) {85if (stream.peek() === ':') {86return 'variable';87}88return 'variable-2';89} else if (['[', ']', '(', ')'].indexOf(stream.peek()) != -1) {90stream.next();91return 'bracket';92} else if (!stream.eatSpace()) {93stream.next();94}95return null;96}97};98}, "javascript");99100101