l0_locals.py
Module: l0_locals
Source: compiler/stage1_py/l0_locals.py Language: Python
Symbols
- l0_locals
- l0_locals::LocalKind
- l0_locals::LocalSymbol
- l0_locals::Scope
- l0_locals::FunctionEnv
- l0_locals::LocalScopeResolver
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_scopeandget_match_arm_scopemethods 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:
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:
arm: The MatchArm AST node.
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.