| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | // CodeMirror, copyright (c) by Marijn Haverbeke and others// Distributed under an MIT license: https://codemirror.net/LICENSE// Brainfuck mode created by Michael Kaminsky https://github.com/mkaminsky11(function(mod) {  if (typeof exports == "object" && typeof module == "object")    mod(require("../../lib/codemirror"))  else if (typeof define == "function" && define.amd)    define(["../../lib/codemirror"], mod)  else    mod(CodeMirror)})(function(CodeMirror) {  "use strict"  var reserve = "><+-.,[]".split("");  /*  comments can be either:  placed behind lines        +++    this is a comment  where reserved characters cannot be used  or in a loop  [    this is ok to use [ ] and stuff  ]  or preceded by #  */  CodeMirror.defineMode("brainfuck", function() {    return {      startState: function() {        return {          commentLine: false,          left: 0,          right: 0,          commentLoop: false        }      },      token: function(stream, state) {        if (stream.eatSpace()) return null        if(stream.sol()){          state.commentLine = false;        }        var ch = stream.next().toString();        if(reserve.indexOf(ch) !== -1){          if(state.commentLine === true){            if(stream.eol()){              state.commentLine = false;            }            return "comment";          }          if(ch === "]" || ch === "["){            if(ch === "["){              state.left++;            }            else{              state.right++;            }            return "bracket";          }          else if(ch === "+" || ch === "-"){            return "keyword";          }          else if(ch === "<" || ch === ">"){            return "atom";          }          else if(ch === "." || ch === ","){            return "def";          }        }        else{          state.commentLine = true;          if(stream.eol()){            state.commentLine = false;          }          return "comment";        }        if(stream.eol()){          state.commentLine = false;        }      }    };  });CodeMirror.defineMIME("text/x-brainfuck","brainfuck")});
 |