JSFiddle - React, Tailwind, and code Playground
JavaScript
var w=function(s){document.write(s);};
var wl=function(s){document.writeln(s+'<br />');};
var wa=function(a){w('['+a.join(',')+']');};
w('<pre>');
// sample machine
var m0 =
"ab \n"+
"\\_A\n"+
" C ";
// full adder
var m =
'1 a \n'+
'\\_/ b\n'+
' \\_/\n'+
' \\/ \n'+
' /\\ \n'+
'_ __/\n'+
' \\_/ \n'+
' \\/c\n'+
' \\\\_/\n'+
' _S1\n'+
'\\ \\/\n'+
' __/ \n'+
' / \n'+
' _ \n'+
'\\__ \n'+
' C ';
// a-z = 97-122 [C>'`']
// \ = 92
// / = 47
// 1 = 49
// {space} = 32
// A-Z = 65-90
// _ = 95
l=m.split(q='\n');o='';for(r=Array(z=l[i=0].length);i<l.length;i++){L=l[i];n=Array(z);for (c=0;c<z;n[c]=N,r[c++]=R){C=L[c];N=~~n[c];R=~~r[c];if(C>'`'){N+=x=~~prompt(C);R+=x;o+=C+': '+x+q}else if(C=='\\'||C=='/'){for(d=c+(g=C=='/'?-1:1);L[d]=='_';r[d]+=R,d+=g);if(L[d]>'@'&L[d]<'[')r[d]+=r[c];n[d]=~~n[d]+R}else if(C<'2')N+=R+=~~C;else if(C!='_')o+=C+': '+R+q}for(c=0;c<z;c++)if(L[c]=='_')n[c]+=(r[c]%2)?0:r[c]>0;r=n}alert(o)
/*
GOLFED SOURCE (see history for clearer source)
l=m.split(q='\n');o='';
for (r=Array(z=l[i=0].length);i<l.length;i++)
{
L=l[i];
n=Array(z);
for (c=0;c<z;n[c]=N,r[c++]=R)
{
C=L[c];N=~~n[c];R=~~r[c];
if (C>'`') {
N+=x=~~prompt(C);
R+=x;
o+=C+': '+x+q;
} else if (C=='\\'||C=='/') {
for(d=c+(g=C=='/'?-1:1);L[d]=='_';r[d]+=R,d+=g);
if(L[d]>'@'&L[d]<'[')r[d]+=r[c];
n[d]=~~n[d]+R;
} else if (C<'2')
N+=R+=~~C;
else if (C!='_')
o+=C+': '+R+q;
}
for (c=0;c<z;c++)
if (L[c]=='_')
n[c]+=(r[c]%2)?0:r[c]>0;
r=n;
}
alert(o);
*/
w('</pre>');