l0_backend_module.py

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.