// A parseblock_outer should change return address, // so parsing continues at a different location! // This is needed because we have processed the // stuff AFTER the word "do"... ::builtin do parseword if("(" streq) { drop parseword if(")" streq) { "" parseblock_outer() } } [ if("[" streq) { drop parseword if("]" streq) { "" parseblock_outer[] } } [ if("{" streq) { drop parseword if("}" streq) { "" parseblock_outer{} } } ] ] ;