!function(mod){"object"==typeof exports&&"object"==typeof module?mod(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],mod):mod(CodeMirror)}(function(CodeMirror){"use strict";CodeMirror.defineMode("pascal",function(){function words(str){for(var obj={},words=str.split(" "),i=0;i!?|\/]/;function tokenBase(stream,state){var ch=stream.next();if("#"==ch&&state.startOfLine)return stream.skipToEnd(),"meta";if('"'==ch||"'"==ch)return state.tokenize=tokenString(ch),state.tokenize(stream,state);if("("==ch&&stream.eat("*"))return state.tokenize=tokenComment,tokenComment(stream,state);if("{"==ch)return state.tokenize=tokenCommentBraces,tokenCommentBraces(stream,state);if(/[\[\]\(\),;\:\.]/.test(ch))return null;if(/\d/.test(ch))return stream.eatWhile(/[\w\.]/),"number";if("/"==ch&&stream.eat("/"))return stream.skipToEnd(),"comment";if(isOperatorChar.test(ch))return stream.eatWhile(isOperatorChar),"operator";stream.eatWhile(/[\w\$_]/);var cur=stream.current();return keywords.propertyIsEnumerable(cur)?"keyword":atoms.propertyIsEnumerable(cur)?"atom":"variable"}function tokenString(quote){return function(stream,state){for(var escaped=!1,next,end=!1;null!=(next=stream.next());){if(next==quote&&!escaped){end=!0;break}escaped=!escaped&&"\\"==next}return!end&&escaped||(state.tokenize=null),"string"}}function tokenComment(stream,state){for(var maybeEnd=!1,ch;ch=stream.next();){if(")"==ch&&maybeEnd){state.tokenize=null;break}maybeEnd="*"==ch}return"comment"}function tokenCommentBraces(stream,state){for(var ch;ch=stream.next();)if("}"==ch){state.tokenize=null;break}return"comment"}return{startState:function(){return{tokenize:null}},token:function(stream,state){if(stream.eatSpace())return null;var style=(state.tokenize||tokenBase)(stream,state);return style},electricChars:"{}"}}),CodeMirror.defineMIME("text/x-pascal","pascal")});