[][src]Crate firm_construction

Lowers the output of the semantic analysis phase (AST, Type System, Type Analysis), into Firm for code generation.

Generated Labels

A dot (.) is a valid character in an ASM label, but not in MiniJava. This is why it's used as a separator. As properties and methods live in their own namespaces, fields have the additional segment .F., methods have the additional segment .M..

Unused Struct Properties

While building the firm graph, identifiers are created for Firm entities using CString, which heap-allocates. However, firm only contains raw pointers to the CString instances, hence the CString must be kept around for the lifetime of the graph. Otherwise rust would de allocate the CString to early!

Re-exports

pub use asciifile;
pub use parser;
pub use strtab;
pub use type_checking;
pub use self::firm_program::*;
pub use self::method_body_generator::MethodBodyGenerator;
pub use self::program_generator::ProgramGenerator;
pub use self::runtime::Runtime;

Modules

ast
firm_program
method_body_generator
program_generator
ref_eq
runtime

Structs

Options

Enable or disable behaviour during the lowering phase

Enums

FirmError