i:(0:"i/18")^'" " +/{.")"/"."\"("/")"\"."/"("\|x}'i paren:{s:-2_x="(";e:2_x=")";p:&0+s&e;x@(!#x)^p,p+2} / (x) -> x op:{ / +: x+y -> z; *: [^+]x*y[^+] -> z b:|/"()"=\:x p:x=" +"y~"*" k:-1+&0+~|/(~x=y;-2_0,0,p;2_p,0,0;1_b,0;-1_0,b) x{[op;x;y],/(y#x;0+"0"+op/(x(y;y+2))-"0";3_y_x)}[.y]/|k} +//-"0"-{paren@op[;"*"]op[;"+"]x}/'i