\ 4tH library - SEARCH (STRING) - Copyright 2003,2004 J.L. Bezemer \ You can redistribute this file and/or modify it under \ the terms of the GNU General Public License \ Load COMPARE when needed [UNDEFINED] compare [IF] [needs lib/compare.4th] [THEN] [UNDEFINED] search [IF] : search swap >r >r over ( a1 n1 a1) over r@ - r> swap ( a1 n1 a1 n2 n3) begin dup -1 > ( a1 n1 a1 n2 n3 f) if ( a1 n1 a1 n2 n3) -rot 2dup ( a1 n1 n3 a1 n2 a1 n2) r@ over ( a1 n1 n3 a1 n2 a1 n2 a2 n2) compare ( a1 n1 n3 a1 n2 f) if ( a1 n1 n3 a1 n2) swap char+ swap ( a1 n1 n3 a1+1 n2) rot 1- false ( a1 n1 a1+1 n2 n3 -f) else ( a1 n1 n3 a1 n2) rot + ( a1 n1 a1 n2+n3) 2>r 2drop 2r> ( a1 n2+n3) true dup ( a1 n2+n3 f f) then else ( a1 n1 a1 n2 n3) drop 2drop false true then ( a1 n1 -f f) until r> drop ; [THEN]