2007-09-20 18:09:08 -04:00
|
|
|
! Copyright (C) 2005, 2006 Eduardo Cavazos
|
|
|
|
|
|
|
|
! Thanks to Mackenzie Straight for the idea
|
|
|
|
|
2008-01-10 14:57:28 -05:00
|
|
|
USING: compiler.units kernel parser words namespaces
|
|
|
|
sequences quotations ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
IN: vars
|
|
|
|
|
|
|
|
: define-var-symbol ( str -- ) create-in define-symbol ;
|
|
|
|
|
|
|
|
: define-var-getter ( str -- )
|
2008-01-10 14:57:28 -05:00
|
|
|
dup ">" append create-in swap in get lookup [ get ] curry define ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: define-var-setter ( str -- )
|
2008-01-10 14:57:28 -05:00
|
|
|
">" over append create-in swap in get lookup [ set ] curry define ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-01-10 14:57:28 -05:00
|
|
|
: define-var ( str -- ) [
|
|
|
|
dup define-var-symbol dup define-var-getter define-var-setter
|
|
|
|
] with-compilation-unit ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: VAR: ! var
|
|
|
|
scan define-var ; parsing
|
|
|
|
|
|
|
|
: define-vars ( seq -- ) [ define-var ] each ;
|
|
|
|
|
|
|
|
: VARS: ! vars ...
|
|
|
|
";" parse-tokens define-vars ; parsing
|