#! /usr/bin/env ueforth needs parsing.fs also internals : space? ( ch -- f ) dup bl = over nl = or over 10 = or swap 9 = or ; kind {{ }} {{ @token space? 0= throw +token }} : st' postpone postpone t' postpone ; immediate : st" postpone postpone t" postpone ; immediate kind {{ [char] 0 [char] 9 []token [char] 0 - }} : letnum? ( ch -- f ) dup [char] 0 [char] 9 within over [char] A [char] Z within or over [char] a [char] z within or swap [char] _ = or ; kind {{ >in @ tib + 0 begin @token letnum? while 1+ +token repeat dup 0= throw }} kind {{ 1 }} {{ rot over 0 do 10 * loop -rot 1+ >r + r> }} kind {{ drop aliteral }} kind {{ [char] ] parse evaluate }} kind kind {{ }} {{ evaluate }} kind {{ evaluate }} {{ }} {{ st' ( st' ) }} {{ st' [ }} kind {{ }} {{ st' * postpone * }} {{ st' / postpone / }} {{ st" mod" postpone mod }} {{ st" and" postpone and }} kind {{ }} {{ st' + postpone + }} {{ st' - postpone - }} {{ st" or" postpone or }} {{ st' + }} {{ st' - postpone negate }} kind {{ }} {{ st' = postpone = }} {{ st" <>" postpone <> }} {{ st' < postpone < }} {{ st" <=" postpone <= }} {{ st" >=" postpone >= }} {{ st' > postpone > }} ' :{{ }} kind {{ }} {{ st' } }} kind def {{ : st' { postpone { st' { postpone ; }} kind on {{ ' :{{ st' { postpone }} }} kind expr {{ :noname postpone ; execute }}