Annotation of gforth/look.fs, revision 1.1
1.1 ! anton 1: \ LOOK.FS xt -> lfa 22may93jaw
! 2:
! 3: \ Look checks first if the word is a primitive. If yes then the
! 4: \ vocabulary in the primitive area is beeing searched, meaning
! 5: \ creating for each word a xt and comparing it...
! 6:
! 7: \ If a word is no primitive look searches backwards to find the nfa.
! 8: \ Problems: A compiled xt via compile, might be created with noname:
! 9: \ a noname: leaves now a empty name field
! 10:
! 11: decimal
! 12:
! 13: \ >NAME PRIMSTART 22may93jaw
! 14:
! 15: \ : >name ( xt -- nfa )
! 16: \ BEGIN 1 chars -
! 17: \ dup c@ 128 and
! 18: \ UNTIL ;
! 19:
! 20: : PrimStart ['] true >name ;
! 21:
! 22: \ look 17may93jaw
! 23:
! 24: : (look) ( xt startlfa -- lfa flag )
! 25: false swap
! 26: BEGIN @ dup
! 27: WHILE dup cell+ name>
! 28: 3 pick = IF nip dup THEN
! 29: REPEAT
! 30: drop nip
! 31: dup 0<> ;
! 32:
! 33: : look ( cfa -- lfa flag )
! 34: dup forthstart u<
! 35: IF PrimStart (look)
! 36: ELSE >name true THEN ;
! 37:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>