An environment maps identifiers in the input to information about their intended behavior in the program. For instance, some identifiers act as keywords that represent a micro or a macro, others are bound by a binding construct, and others are unbound.
Zodiac uses the type zodiac:env-entry to range over representations of the possible types of behaviors an identifier can exhibit. zodiac:env-entry includes:
zodiac:macro-resolution (rewriter)
zodiac:micro-resolution (rewriter)
zodiac:top-level-resolution ()
The rewriter fields contain a micro or macro, as appropriate.
Micros have the type read env attr vocab
parsed while macros have the type
read env
read.
Languages implemented atop Zodiac will extend env-entry to reflect their binding constructs. Unless extended, all identifiers that do not resolve to macro or micros will yield top-level-resolutions.
Procedures