pub trait Codegen {
Show 20 methods
// Required methods
fn function_declaration(&mut self, fn_decl: &FunctionStatement);
fn constant(&mut self, const_decl: &Constant);
fn types(&mut self, type_decl: &StructTypes);
fn function_statement(&mut self, fn_decl: &FunctionStatement);
fn let_binding(&mut self, let_decl: &Value, expr_result: &ExpressionResult);
fn binding(&mut self, val: &Value, expr_result: &ExpressionResult);
fn call(
&mut self,
call: &Function,
params: Vec<ExpressionResult>,
register_number: u64
);
fn expression_value(&mut self, expression: &Value, register_number: u64);
fn expression_struct_value(
&mut self,
expression: &Value,
index: u64,
register_number: u64
);
fn expression_const(&mut self, expression: &Constant, register_number: u64);
fn expression_operation(
&mut self,
operation: &ExpressionOperations,
left_value: &ExpressionResult,
right_value: &ExpressionResult,
register_number: u64
);
fn expression_function_return(&mut self, expr_result: &ExpressionResult);
fn jump_function_return(&mut self, expr_result: &ExpressionResult);
fn set_label(&mut self, label: &LabelName);
fn expression_function_return_with_label(
&mut self,
expr_result: &ExpressionResult
);
fn condition_expression(
&mut self,
left_result: &ExpressionResult,
right_result: &ExpressionResult,
condition: &Condition,
register_number: u64
);
fn logic_condition(
&mut self,
left_condition_register: u64,
right_condition_register: u64,
logic_condition: &LogicCondition,
register_number: u64
);
fn if_condition_expression(
&mut self,
expr_result: &ExpressionResult,
label_if_begin: &LabelName,
label_if_end: &LabelName
);
fn if_condition_logic(
&mut self,
label_if_begin: &LabelName,
label_if_end: &LabelName,
register_number: u64
);
fn jump_to(&mut self, label: &LabelName);
}