!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}((function(e){"use strict";e.defineMode("fortran",(function(){function e(e){for(var t={},n=0;n\/\:]/,r=/^\.(and|or|eq|lt|le|gt|ge|ne|not|eqv|neqv)\./i;function o(e,o){if(e.match(r))return"operator";var c,l=e.next();if("!"==l)return e.skipToEnd(),"comment";if('"'==l||"'"==l)return o.tokenize=(c=l,function(e,t){for(var n,i=!1,a=!1;null!=(n=e.next());){if(n==c&&!i){a=!0;break}i=!i&&"\\"==n}return!a&&i||(t.tokenize=null),"string"}),o.tokenize(e,o);if(/[\[\]\(\),]/.test(l))return null;if(/\d/.test(l))return e.eatWhile(/[\w\.]/),"number";if(a.test(l))return e.eatWhile(a),"operator";e.eatWhile(/[\w\$_]/);var s=e.current().toLowerCase();return t.hasOwnProperty(s)?"keyword":n.hasOwnProperty(s)||i.hasOwnProperty(s)?"builtin":"variable"}return{startState:function(){return{tokenize:null}},token:function(e,t){if(e.eatSpace())return null;var n=(t.tokenize||o)(e,t);return n}}})),e.defineMIME("text/x-fortran","fortran")}));