\d p \l k L:_ci(,/97 65+\:!26;48+!10) S:"`" D:"." O:"'/\\" Q:"\"" P:"()" B:"[]" C:"{}" X:";" Y:":" I:$`if`then`else J:$`hd`tl K:$`where`is`and eq:{(z[;0]=x)&~0&':>/+\'y=\:z[;0]} and:eq[X;B] is:eq[Y;B] lr:{(0,(=/+\'y~\:/:x)?1)_ y} then:lr[2#I] else:lr[I 0 2] par:lr[+,P] bra:lr[+,B] parse:{[s;v;t]forms .:[(#t)>i:t?*K;where[s;v;i#t](i+1)_ t;(expr[$s;$v]i#t;())]} where:{[s;v;e;w](expr[$s;$v,c[;0]]e;c:local w)} local:{[w]clause .'{(,x[;0;0]),/:x}@({(0 1,x?K 1)_ x}1_)'(&w~\:K 2)_ w:(,K 2),w} clause:{[f;g;v;e](`$*g;`$v;expr[*g;v,f]1_ e)} forms:{[e;w](form e;{(x;y;form z)}.'w)} expr:{[s;v;t]:[~#t;{;y};I[0]~*t;cond;P[0]~**t;group;B[0]~**t;list;oper][s;v]t} oper:{[s;v;t](,term[s;v]t 0),expr[s;v]1_ t} term:{[s;v;t]{(`$x;y,t)}.+,(+("nnnnnnnncavv";"ZSQJVYANCGHF"))type[s;v;t]?1} type:{[s;v;t](~#:;S~*:;Q~*:;{x _in J};{x _in v};{x~s};{x[0]_in*L};{(x[0]_in L[1],D)&|/L[1]_lin x};{x[0]_in C};{x[0]_in O};Y~*:)@\:t} cond:{[s;v;t]b:then@*a:else t;((`n;,"O");(expr[s;v]1_)'b,,a 1)} group:{[s;v;t]a:par t;b:1_*a;:[#b;,expr[s;v;b];,(`n;,"L")],expr[s;v]1_ a 1} list:{[s;v;t]a:bra t;expr[s;v]elem[part 1!(+,2#X),1_*a],1_ a 1} elem:{[t]:[t~,"";,P;1!(+,|P),@[t;&t~\:,X;:[;,Y]],(,Y;P)]} part:{[t]1_-1_,/@[+,t;&&':t[;0]=X;,[;,""]]} apply:{:[@x;();b[`n`v`a`c?*x]x 1]} A:{@} a:A,apply' b:({:[4:x;x;(`n;,"O")~*x;o .(,x[1;1;0]),x[1;1;1;1];a x]};{:[4:x;x;a@|x]};{:[4:x;x;a x]};::;a@|:) o:{(A;(A;(A;,"O";apply x);apply y);apply z)} compose:{:[4:x;x;A,_f'1_ x]} form:compose apply tree@ \d ^ parse:p.parse