l0_locals.py

l0_locals.py

Module: l0_locals

Source: compiler/stage1_py/l0_locals.py Language: Python

Symbols

Namespace l0_locals

Class l0_locals::LocalKind

Enumeration of the different kinds of local bindings.

Member Data l0_locals.LocalKind.PARAM

1
l0_locals.LocalKind::PARAM

Member Data l0_locals.LocalKind.LOCAL

1
l0_locals.LocalKind::LOCAL

Member Data l0_locals.LocalKind.PATTERN_VAR

1
l0_locals.LocalKind::PATTERN_VAR

Class l0_locals::LocalSymbol

Represents a single local binding.

Member Data l0_locals.LocalSymbol.name

1
str name

Member Data l0_locals.LocalSymbol.kind

1
LocalKind kind

Member Data l0_locals.LocalSymbol.type_ref

1
Optional type_ref

Member Data l0_locals.LocalSymbol.decl

1
Node decl

Class l0_locals::Scope

A lexical scope for local bindings.

Scopes form a tree structure via parent pointers, mirroring the nested structure of the source code.

Member Data l0_locals.Scope.parent

1
Optional parent

Member Data l0_locals.Scope.symbols

1
Dict symbols

Function l0_locals.Scope.lookup

1
Optional[LocalSymbol] l0_locals.Scope.lookup(self, str name)

Look up a name in this scope and all enclosing scopes.

Parameters:

  • name: The name to look up.

Returns: The LocalSymbol if found, otherwise None.

Class l0_locals::FunctionEnv

Environment for a single function.

Member Data l0_locals.FunctionEnv.module_name

1
str module_name

Member Data l0_locals.FunctionEnv.func

1
FuncDecl func

Member Data l0_locals.FunctionEnv.root_scope

1
Scope root_scope

Class l0_locals::LocalScopeResolver

Builds lexical scopes for functions within a compilation unit.

This resolver traverses function bodies and creates nested scopes for blocks, loops, and match arms.

See also:

  • get_block_scope and get_match_arm_scope methods for retrieving scopes by AST node.

Member Data l0_locals.LocalScopeResolver.modules

1
l0_locals.LocalScopeResolver::modules

Function l0_locals.LocalScopeResolver.__init__

1
None l0_locals.LocalScopeResolver.__init__(self, Dict[str, Module] modules)

Initialize the local scope resolver.

Parameters:

  • modules: The modules to analyze.

    Function l0_locals.LocalScopeResolver.resolve

1
Dict[Tuple[str, str], FunctionEnv] l0_locals.LocalScopeResolver.resolve(self)

Build scopes for all non-extern functions in the modules.

Returns: A mapping from function identifiers to their environments.

Function l0_locals.LocalScopeResolver.get_block_scope

1
Optional[Scope] l0_locals.LocalScopeResolver.get_block_scope(self, Block block)

Get the lexical scope associated with a block.

Parameters:

  • block: The Block AST node.

Returns: The associated Scope if found, otherwise None.

Function l0_locals.LocalScopeResolver.get_match_arm_scope

1
Optional[Scope] l0_locals.LocalScopeResolver.get_match_arm_scope(self, MatchArm arm)

Get the lexical scope associated with a match arm.

Parameters:

Returns: The associated Scope if found, otherwise None.

Function l0_locals.LocalScopeResolver._build_function_env

1
FunctionEnv l0_locals.LocalScopeResolver._build_function_env(self, str module_name, FuncDecl func)

Build the environment and root scope for a single function.

Function l0_locals.LocalScopeResolver._visit_block

1
None l0_locals.LocalScopeResolver._visit_block(self, Block block, Scope scope)

Traverse a block and populate scopes.

Function l0_locals.LocalScopeResolver._visit_stmt

1
None l0_locals.LocalScopeResolver._visit_stmt(self, Stmt stmt, Scope scope)

Visit a statement and handle any scope introductions.

Function l0_locals.LocalScopeResolver._visit_with_stmt

1
None l0_locals.LocalScopeResolver._visit_with_stmt(self, WithStmt stmt, Scope parent_scope)

Visit a with statement and manage its header and body scopes.

Function l0_locals.LocalScopeResolver._visit_match_arm

1
None l0_locals.LocalScopeResolver._visit_match_arm(self, MatchArm arm, Scope parent_scope)

Visit a match arm and create its child scope.

Function l0_locals.LocalScopeResolver._visit_case_arm

1
None l0_locals.LocalScopeResolver._visit_case_arm(self, CaseArm arm, Scope parent_scope)

Visit a case arm.

Function l0_locals.LocalScopeResolver._visit_case_else

1
None l0_locals.LocalScopeResolver._visit_case_else(self, CaseElse arm, Scope parent_scope)

Visit a case else arm.

Function l0_locals.LocalScopeResolver._bind_pattern_vars

1
None l0_locals.LocalScopeResolver._bind_pattern_vars(self, Pattern pattern, Scope scope)

Bind variables introduced by a pattern in the given scope.

Function l0_locals.LocalScopeResolver._declare

1
LocalSymbol l0_locals.LocalScopeResolver._declare(self, Scope scope, str name, LocalKind kind, Optional[TypeRef] type_ref, Node decl)

Declare a local symbol in the given scope.