CREATE source.txt \ Leo Wong 2 April 02003 fyj + \ (greek) (greeks) +leading -strings \out c"greek" c"greeks" \ greek" s"greek" s"greeks" source.txt include from.txt from tools.txt from string.txt from sdollar.txt : +leading ( a u -- a u+1 ) >R DUP DUP CHAR+ R@ CMOVE> BL OVER C! R> 1+ ; : \out ( ca u1 -- ca u2 ) 2DUP S" \ " SEARCH AND NIP - ; : ( ca1 u1 ca2 u2 -- ca2 u2 ) 2>R R@ - 0 ?DO DUP C@ 127 + OVER C! CHAR+ LOOP DROP 2R> ; : (greek) ( ca1 u1 -- ca2 u2 ) S" ( " DUP >R SEARCH AND R> /STRING 0 MAX 2DUP [CHAR] ) scan ; : (greeks) ( ca u -- ) BEGIN DUP 0> WHILE (greek) 1 /STRING REPEAT 2DROP ; : greek" 3 /STRING 0 MAX 2DUP [CHAR] " scan ; : s"greek" ( ca1 u1 -- ca2 u2 ) 2DUP S$ ' s" ' sscan 2SWAP S$ ' S" ' sscan DUP 3 PICK > IF 2SWAP THEN 2DROP greek" ; : s"greeks" ( ca u -- ) BEGIN DUP 0> WHILE s"greek" 1 /STRING REPEAT 2DROP ; : c"greek" ( ca1 u1 -- ca2 u2 ) 2DUP S$ ' c" ' sscan 2SWAP S$ ' C" ' sscan DUP 3 PICK > IF 2SWAP THEN 2DROP greek" ; : c"greeks" ( ca u -- ) BEGIN DUP 0> WHILE c"greek" 1 /STRING REPEAT 2DROP ; : -strings ( ca1 u1 -- ca2 u2 ) +leading 2DUP c"greeks" 2DUP s"greeks" 2DUP (greeks) \out ;