outbuf=: '' emit=:{{ outbuf=: outbuf,y if.LF e. outbuf do. ndx=. outbuf i:LF echo ndx{.outbuf outbuf=: }.ndx}.outbuf end. }} load_ast=: {{ 'node_types node_values'=: 2{.|:(({.,&<&<}.@}.)~ i.&' ');._2 y 1{::0 load_ast '' : node_type=. x{::node_types if. node_type-:,';' do. x;a: return.end. node_value=. x{::node_values if. -.''-:node_value do.x;&interp W case.'GreaterEqual'do.V >&interp W case.'Equal'do.V =&interp W case.'NotEqual'do.V ~:&interp W case.'Not'do.0=interp V case.'And'do.V *.&interp W case.'Or' do.V +.&interp W case.'If'do.if.interp V do.interp left W else.interp right W end.'' case.'While'do.while.interp V do.interp W end.'' case.'Prtc'do.emit u:interp V case.'Prti'do.emit rplc&'_-'":interp V case.'Prts'do.emit interp V case.'Sequence'do. interp V interp W '' case.do.error'unknown node type ',typ y end. }}