factor/unmaintained/lisp/parser/mod/mod.factor

39 lines
1.1 KiB
Factor

! Broken by recent changes
USING: kernel vocabs words combinators math
namespaces arrays sequences assocs sorting
inspector vars ;
IN: parser
!
! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! : word-restarts ( string -- restarts )
! words-named natural-sort
! [ [ "Use the word " swap summary append ] keep 2array ] map
! { "Define this word as a symbol" 0 } add
! { "Defer this word in the 'scratchpad' vocabulary" f } add ;
!
! : no-word-option ( obj -- word )
! { { [ dup f = ] [ drop in get create ] }
! { [ dup 0 = ] [ drop in get create dup define-symbol ] }
! { [ t ] [ nip dup word-vocabulary use+ ] }
! } cond ;
!
VAR: new-symbol-action ! ( str -- word )
!
! [ dup no-word no-word-option ] new-symbol-action set-global
!
! ! For lisp:
! !
! ! [ in get create dup define-symbol ] >new-symbol-action
!
! : search ( str -- word )
! { { [ dup use get assoc-stack ]
! [ use get assoc-stack ] }
! { [ dup words-named empty? ]
! [ new-symbol-action> call ] }
! { [ dup words-named length 0 > ]
! [ dup no-word no-word-option ] }
! } cond ;