JSFiddle - React, Tailwind, and code Playground

HTML

<textarea id="code"></textarea>
<div id="result">
    
</div>

CSS

#code{
    width:100%;
}
#error{
    color:red;  
}

JavaScript

Array.prototype.last = function() {
    var l = this.length - 1;
    if (l >= 0) {
        return this[l];
    }
    return null;
};
var compile = function() {
    var run = function(str) {
        var mainArray = [];
        var last;
        try {
            var reg = /var|""|''|"|'|;|\s+|[a-zA-Z$_0-9]+|[^a-zA-Z$_0-9]+/g;
            var reg1=/.*?[^\\\n](?=")|\n/g;
            var reg2=/.*?[^\\\n](?=')|\n/g;
            var currentReg=0;  // тек. номер регулярного выражения
            var r = reg;
            var arr;
            var instring=0;
            var output = "";
            while ((arr = r.exec(str)) !== null || toOutput()) {
                last = mainArray.last();
                defWord(arr[0]);
            }
            return output;
        } catch (e) {
            return[e.toString()];
        }
        function defWord(w) {
            if(instring){
                if(w[0]=="\n") throw "неожиданный перевод строки"
                last.str+=w;
                reg.lastIndex=(currentReg==1)?reg1.lastIndex:reg2.lastIndex;
                r=reg;
                instring=0;
                return;
            }else   if (w[0] == " " || w[0] == "\n") { // пока игнорируем
                return;
            }
            switch(w) {
                case "var":
                    var_handler();
                    break;
                case ";":
                    semicolon_handler();
                    break;
                case '"':
                    string_handler(0);
                    break;
                case "'":
                    string_handler(1);
                    break;
                case "''":
                    string_handler(2);
                    break;
                case '""':
                    string_handler(3);
                    break;
                default:
                    w_handler(w);
            }
        }
        function toOutput() {
            var l = mainArray.length;
            for (var i...