NAME

Zuzu::Env - lexical environment used for variable bindings

DESCRIPTION

Stores lexical bindings as references, tracks const-ness, and resolves names through parent scopes.

INHERITANCE

Inherits from Moo::Object.

ROLES

None.

ATTRIBUTES

parent

Type: Maybe[InstanceOf["Zuzu::Env"]].

Enclosing lexical scope, or undef for the global scope.

slots

Type: HashRef[ScalarRef].

Variable storage map from names to scalar references.

const

Type: HashRef[Bool].

Const-ness map; true entries cannot be reassigned.

weak

Type: HashRef[Bool].

Weak-storage map; true entries store weakable values as weak references.

METHODS

new

Constructs and returns a new instance of this class.

declare

Declares a new name in the current environment.

alias_to_ref

Binds a name to an existing scalar reference.

find_ref

Finds a variable reference in current or parent scopes.

is_const_here

Reports whether a locally-declared name is const.

is_weak_here

Reports whether a locally-declared name uses weak storage.

is_weak_slot

Reports whether a name uses weak storage, resolving through parent scopes.

set_weak_slot

Updates the weak-storage flag for an existing name.

SEE ALSO

Subclasses: none in this distribution.

COPYRIGHT AND LICENCE

Zuzu::Env is copyright Toby Inkster.

It is free software; you may redistribute it and/or modify it under the terms of either the Artistic License 1.0 or the GNU General Public License version 2.