JSFiddle - React, Tailwind, and code Playground
HTML
Code
<textarea id="code"></textarea>
<br/>
<button onclick="runcode()">Run</button>
<br/>Output:
<textarea id="output"></textarea>
JavaScript
$(function(){
locals=[];
});
$('button').click(function () {
var opsTable = [];
opsTable['di'] = 'display';
opsTable['dis'] = 'display';
opsTable['disp'] = 'display';
opsTable['displ'] = 'display';
opsTable['displa'] = 'display';
opsTable['display'] = 'display';
opsTable['loc'] = 'local';
opsTable['loca'] = 'local';
opsTable['local'] = 'local';
var code = $('#code').val();
var commands = code.split('\n');
var tokens = [];
commands.forEach(function (entry) {
tokens.push(entry.split(' '));
});
var error = '';
$.each(tokens,function (index,entry) {
var tok = entry[0];
entry[0] = opsTable[tok];
if (entry[0] === undefined) {
error = tok + ' is not a recognized command';
outputError(error);
return false;
}
if(!execute(entry)){
return false;
}
});
});
function execute(command){
switch(command[0]){
case 'display':
return executeDisplay(command);
case 'local':
return executeLocal(command);
}
}
function executeLocal(command){
var parts=command[1].split('=');
locals[evaluate(parts[1])]=evaluate(parts[2]);
return true;
}
function executeDisplay(command){
for(var i=1;i<command.length;i++){
var comVal=command[i];
$('#output').val(function(ind,val){
return val+evaluate(command[i])+'\n';
});
}
return true;
}
function evaluate(str){
return str;
}
function outputError(error) {
$('#output').val(error);
}