factor/extra/smalltalk/compiler/lexenv/lexenv.factor

21 lines
694 B
Factor
Raw Normal View History

2009-03-30 06:31:50 -04:00
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: assocs kernel accessors ;
IN: smalltalk.compiler.lexenv
! local-readers: assoc string => word
! local-writers: assoc string => word
! self: word or f for top-level forms
! class: class word or f for top-level forms
! method: generic word or f for top-level forms
TUPLE: lexenv local-readers local-writers self class method ;
2009-03-30 06:31:50 -04:00
: <lexenv> ( local-readers local-writers -- lexenv )
f f f lexenv boa ; inline
2009-03-30 06:31:50 -04:00
CONSTANT: empty-lexenv T{ lexenv }
: lexenv-union ( lexenv1 lexenv2 -- lexenv )
[ [ local-readers>> ] bi@ assoc-union ]
[ [ local-writers>> ] bi@ assoc-union ] 2bi <lexenv> ;