l0_c_names.py
Module: l0_c_names
Source: compiler/stage1_py/l0_c_names.py Language: Python
Symbols
Namespace l0_c_names
Class l0_c_names::CNames
C identifiers and the session-local temporary-name sequence.
Member Data l0_c_names.CNames.C_KEYWORDS
1
set C_KEYWORDS
Member Data l0_c_names.CNames._tmp_counter
1
int _tmp_counter
Function l0_c_names.CNames.mangle_struct_name
1
str l0_c_names.CNames.mangle_struct_name(self, str module_name, str struct_name)
Mangle a struct name to avoid C namespace collisions.
Parameters:
module_name: Module name.struct_name: L0 struct name.
Returns: Mangled C struct name (e.g., “l0_module_Point”).
Function l0_c_names.CNames.mangle_enum_name
1
str l0_c_names.CNames.mangle_enum_name(self, str module_name, str enum_name)
Mangle an enum name.
Parameters:
module_name: Module name.enum_name: L0 enum name.
Returns: Mangled C enum name.
Function l0_c_names.CNames.mangle_function_name
1
str l0_c_names.CNames.mangle_function_name(self, str module_name, str func_name)
Mangle a function name.
Parameters:
module_name: Module name.func_name: L0 function name.
Returns: Mangled C function name.
Function l0_c_names.CNames.mangle_let_name
1
str l0_c_names.CNames.mangle_let_name(self, str module_name, str let_name)
Mangle a top-level let name to C identifier.
Parameters:
module_name: Module name.let_name: L0 constant name.
Returns: Mangled C identifier.
Function l0_c_names.CNames.mangle_identifier
1
str l0_c_names.CNames.mangle_identifier(self, str name)
Mangle an identifier if it conflicts with C keywords or L0 names.
Used for local variables, parameters, and pattern variables. Appends ‘_v’ suffix to avoid C keyword conflicts. Also mangles names starting with ‘’ or ‘l0’/’L0’ to avoid clashes with runtime names.
Parameters:
name: The L0 identifier to mangle.
Returns: The safe C identifier.
Function l0_c_names.CNames.fresh_tmp
1
str l0_c_names.CNames.fresh_tmp(self, str kind="tmp")
Generate a unique temporary variable name.
Parameters:
kind: Category of temporary (e.g., “tmp”, “ptr”, “try”).
Returns: Unique C identifier like “l0_tmp_1”, “l0_ptr_2”, etc.
Function l0_c_names.CNames.emit_enum_tag
1
str l0_c_names.CNames.emit_enum_tag(self, EnumType enum_type, str variant_name)
Emit C tag enum value for an enum variant.
Parameters:
enum_type: The L0 enum type.variant_name: The name of the variant.
Returns: The mangled C enum tag identifier.