l0_backend_module.py
Module: l0_backend_module
Source: compiler/stage1_py/l0_backend_module.py Language: Python
Symbols
Namespace l0_backend_module
Class l0_backend_module::ModuleGeneration
Translation-unit order, top-level declarations, and function lifecycle.
Member Data l0_backend_module.ModuleGeneration.initializers
1
StaticInitializers initializers
Member Data l0_backend_module.ModuleGeneration.lifetime
1
ValueLifetime lifetime
Member Data l0_backend_module.ModuleGeneration.lowering
1
Lowering lowering
Member Data l0_backend_module.ModuleGeneration.ordering
1
TypeOrdering ordering
Member Data l0_backend_module.ModuleGeneration.state
1
BackendState state
Function l0_backend_module.ModuleGeneration.generate
1
str l0_backend_module.ModuleGeneration.generate(self)
Main entry point: generate complete C source for the compilation unit.
Returns: C source code as a string.
Function l0_backend_module.ModuleGeneration._emit_let_declarations
1
None l0_backend_module.ModuleGeneration._emit_let_declarations(self)
Emit static global variables for top-level let declarations.
Function l0_backend_module.ModuleGeneration._emit_let_declaration
1
None l0_backend_module.ModuleGeneration._emit_let_declaration(self, str module_name, LetDecl decl)
Emit a single top-level let declaration as a static variable.
Parameters:
module_name: Name of the module containing the declaration.decl: The LetDecl AST node.Function
l0_backend_module.ModuleGeneration._emit_function_declarations
1
None l0_backend_module.ModuleGeneration._emit_function_declarations(self)
Emit forward declarations for all functions.
Function l0_backend_module.ModuleGeneration._emit_function_declaration
1
None l0_backend_module.ModuleGeneration._emit_function_declaration(self, str module_name, FuncDecl decl)
Emit a single function declaration.
Parameters:
module_name: Name of the module.decl: The FuncDecl AST node.Function
l0_backend_module.ModuleGeneration._emit_function_definitions
1
None l0_backend_module.ModuleGeneration._emit_function_definitions(self)
Emit function definitions (bodies).
Function l0_backend_module.ModuleGeneration._emit_function_definition
1
None l0_backend_module.ModuleGeneration._emit_function_definition(self, str module_name, FuncDecl decl)
Emit a complete function definition with body.
Parameters:
module_name: Name of the module.decl: The FuncDecl AST node.Function
l0_backend_module.ModuleGeneration._emit_main_wrapper_if_needed
1
None l0_backend_module.ModuleGeneration._emit_main_wrapper_if_needed(self)
If the entry module has a main function, emit a C main() wrapper.
This allows us to consistently mangle all L0 functions (including main) while still providing the expected C entry point.
Function l0_backend_module.ModuleGeneration._iter_body_stmts
1
l0_backend_module.ModuleGeneration._iter_body_stmts(self, Stmt|None stmt)
Yield every statement reachable from stmt, recursing into block-bearing nodes.
Parameters:
stmt: The root statement (or None).
Returns: An iterator over every Stmt in the sub-tree, including stmt itself.
Function l0_backend_module.ModuleGeneration._collect_reassigned_arc_params
1
set l0_backend_module.ModuleGeneration._collect_reassigned_arc_params(self, FuncDecl decl, FuncType func_type)
Collect the names of ARC-typed parameters reassigned syntactically in the body.
Any function whose body contains an AssignStmt whose target is a bare VarRef naming an ARC-typed parameter needs a defensive retain on that parameter at entry.
Parameters:
decl: The FuncDecl AST node.func_type: The resolved FuncType for the declaration.
Returns: Set of parameter names (source names, not mangled) to retain at entry.