: blank-split ( str -- seq ) " \t" split harvest ; : parsestr ( seq -- seq ) [ dup CHAR: [ swap member? [ "[" "]" [ split1 ] bi@ [ blank-split ] [ "[" "]" surround 1array ] [ blank-split ] tri* 3array concat ] [ blank-split ] if ] map ;