l0_c_names.py

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.