* Update CodeMirror to version 5.49.0 * Update CodeMirror versions in librejs and VERSIONS
		
			
				
	
	
		
			85 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// 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")
 | 
						|
});
 |