1(function(a){if(typeof exports=="object"&&typeof module=="object")a(require("../../lib/codemirror"));else if(typeof define=="function"&&define.amd)define(["../../lib/codemirror"],a);else a(CodeMirror)})(function(a){"use strict";function b(a){var b=[];a.split(" ").forEach(function(a){b.push({name:a})});return b}var c=b("INVERT AND OR XOR 2* 2/ LSHIFT RSHIFT 0= = 0< < > U< MIN MAX 2DROP 2DUP 2OVER 2SWAP ?DUP DEPTH DROP DUP OVER ROT SWAP >R R> R@ + - 1+ 1- ABS NEGATE S>D * M* UM* FM/MOD SM/REM UM/MOD */ */MOD / /MOD MOD HERE , @ ! CELL+ CELLS C, C@ C! CHARS 2@ 2! ALIGN ALIGNED +! ALLOT CHAR [CHAR] [ ] BL FIND EXECUTE IMMEDIATE COUNT LITERAL STATE ; DOES> >BODY EVALUATE SOURCE >IN <# # #S #> HOLD SIGN BASE >NUMBER HEX DECIMAL FILL MOVE . CR EMIT SPACE SPACES TYPE U. .R U.R ACCEPT TRUE FALSE <> U> 0<> 0> NIP TUCK ROLL PICK 2>R 2R@ 2R> WITHIN UNUSED MARKER I J TO COMPILE, [COMPILE] SAVE-INPUT RESTORE-INPUT PAD ERASE 2LITERAL DNEGATE D- D+ D0< D0= D2* D2/ D< D= DMAX DMIN D>S DABS M+ M*/ D. D.R 2ROT DU< CATCH THROW FREE RESIZE ALLOCATE CS-PICK CS-ROLL GET-CURRENT SET-CURRENT FORTH-WORDLIST GET-ORDER SET-ORDER PREVIOUS SEARCH-WORDLIST WORDLIST FIND ALSO ONLY FORTH DEFINITIONS ORDER -TRAILING /STRING SEARCH COMPARE CMOVE CMOVE> BLANK SLITERAL");var d=b("IF ELSE THEN BEGIN WHILE REPEAT UNTIL RECURSE [IF] [ELSE] [THEN] ?DO DO LOOP +LOOP UNLOOP LEAVE EXIT AGAIN CASE OF ENDOF ENDCASE");a.defineMode("forth",function(){function a(a,b){var c;for(c=a.length-1;c>=0;c--){if(a[c].name===b.toUpperCase()){return a[c]}}return undefined}return{startState:function(){return{state:"",base:10,coreWordList:c,immediateWordList:d,wordList:[]}},token:function(b,c){var d;if(b.eatSpace()){return null}if(c.state===""){if(b.match(/^(\]|:NONAME)(\s|$)/i)){c.state=" compilation";return"builtin compilation"}d=b.match(/^(\:)\s+(\S+)(\s|$)+/);if(d){c.wordList.push({name:d[2].toUpperCase()});c.state=" compilation";return"def"+c.state}d=b.match(/^(VARIABLE|2VARIABLE|CONSTANT|2CONSTANT|CREATE|POSTPONE|VALUE|WORD)\s+(\S+)(\s|$)+/i);if(d){c.wordList.push({name:d[2].toUpperCase()});return"def"+c.state}d=b.match(/^(\'|\[\'\])\s+(\S+)(\s|$)+/);if(d){return"builtin"+c.state}}else{if(b.match(/^(\;|\[)(\s)/)){c.state="";b.backUp(1);return"builtin compilation"}if(b.match(/^(\;|\[)($)/)){c.state="";return"builtin compilation"}if(b.match(/^(POSTPONE)\s+\S+(\s|$)+/)){return"builtin"}}d=b.match(/^(\S+)(\s+|$)/);if(d){if(a(c.wordList,d[1])!==undefined){return"variable"+c.state}if(d[1]==="\\"){b.skipToEnd();return"comment"+c.state}if(a(c.coreWordList,d[1])!==undefined){return"builtin"+c.state}if(a(c.immediateWordList,d[1])!==undefined){return"keyword"+c.state}if(d[1]==="("){b.eatWhile(function(a){return a!==")"});b.eat(")");return"comment"+c.state}if(d[1]===".("){b.eatWhile(function(a){return a!==")"});b.eat(")");return"string"+c.state}if(d[1]==='S"'||d[1]==='."'||d[1]==='C"'){b.eatWhile(function(a){return a!=='"'});b.eat('"');return"string"+c.state}if(d[1]-68719476735){return"number"+c.state}return"atom"+c.state}}}});a.defineMIME("text/x-forth","forth")});
2//# sourceMappingURL=forth.min.js.map