forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpegjs.js
More file actions
1 lines (1 loc) · 1.97 KB
/
Copy pathpegjs.js
File metadata and controls
1 lines (1 loc) · 1.97 KB
1
!function(mod){"object"==typeof exports&&"object"==typeof module?mod(require("../../lib/codemirror"),require("../javascript/javascript")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../javascript/javascript"],mod):mod(CodeMirror)}(function(CodeMirror){"use strict";CodeMirror.defineMode("pegjs",function(config){var jsMode=CodeMirror.getMode(config,"javascript");function identifier(stream){return stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/)}return{startState:function(){return{inString:!1,stringType:null,inComment:!1,inCharacterClass:!1,braced:0,lhs:!0,localState:null}},token:function(stream,state){if(state.inString||state.inComment||'"'!=stream.peek()&&"'"!=stream.peek()||(state.stringType=stream.peek(),stream.next(),state.inString=!0),state.inString||state.inComment||!stream.match("/*")||(state.inComment=!0),state.inString){for(;state.inString&&!stream.eol();)stream.peek()===state.stringType?(stream.next(),state.inString=!1):"\\"===stream.peek()?(stream.next(),stream.next()):stream.match(/^.[^\\\"\']*/);return state.lhs?"property string":"string"}if(state.inComment){for(;state.inComment&&!stream.eol();)stream.match("*/")?state.inComment=!1:stream.match(/^.[^\*]*/);return"comment"}if(state.inCharacterClass)for(;state.inCharacterClass&&!stream.eol();)stream.match(/^[^\]\\]+/)||stream.match(/^\\./)||(state.inCharacterClass=!1);else{if("["===stream.peek())return stream.next(),state.inCharacterClass=!0,"bracket";if(stream.match("//"))return stream.skipToEnd(),"comment";if(state.braced||"{"===stream.peek()){null===state.localState&&(state.localState=CodeMirror.startState(jsMode));var token=jsMode.token(stream,state.localState),text=stream.current();if(!token)for(var i=0;i<text.length;i++)"{"===text[i]?state.braced++:"}"===text[i]&&state.braced--;return token}if(identifier(stream))return":"===stream.peek()?"variable":"variable-2";if(-1!=["[","]","(",")"].indexOf(stream.peek()))return stream.next(),"bracket";stream.eatSpace()||stream.next()}return null}}},"javascript")});