|
|
@ -44,7 +44,7 @@ fn generate_statement(statement: Statement) -> String { |
|
|
|
Statement::Declare(_, _) => todo!(), |
|
|
|
Statement::Declare(_, _) => todo!(), |
|
|
|
Statement::Exp(val) => generate_expression(val), |
|
|
|
Statement::Exp(val) => generate_expression(val), |
|
|
|
Statement::If(expr, if_state, else_state) => { |
|
|
|
Statement::If(expr, if_state, else_state) => { |
|
|
|
generate_conditional(expr, *if_state, else_state.map(|x| *x)) |
|
|
|
generate_conditional(expr, if_state, else_state.map(|x| *x)) |
|
|
|
} |
|
|
|
} |
|
|
|
Statement::While(_, _) => todo!(), |
|
|
|
Statement::While(_, _) => todo!(), |
|
|
|
} |
|
|
|
} |
|
|
@ -63,16 +63,17 @@ fn generate_expression(expr: Expression) -> String { |
|
|
|
|
|
|
|
|
|
|
|
fn generate_conditional( |
|
|
|
fn generate_conditional( |
|
|
|
expr: Expression, |
|
|
|
expr: Expression, |
|
|
|
if_state: Statement, |
|
|
|
if_state: Vec<Statement>, |
|
|
|
else_state: Option<Statement>, |
|
|
|
else_state: Option<Statement>, |
|
|
|
) -> String { |
|
|
|
) -> String { |
|
|
|
let expr_str = generate_expression(expr); |
|
|
|
let expr_str = generate_expression(expr); |
|
|
|
let if_str = generate_statement(if_state); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let mut outcome = format!("if ({})", expr_str); |
|
|
|
let mut outcome = format!("if ({})", expr_str); |
|
|
|
|
|
|
|
|
|
|
|
outcome += "{\n"; |
|
|
|
outcome += "{\n"; |
|
|
|
outcome += &if_str; |
|
|
|
for statement in if_state { |
|
|
|
|
|
|
|
outcome += &generate_statement(statement); |
|
|
|
|
|
|
|
} |
|
|
|
outcome += "}"; |
|
|
|
outcome += "}"; |
|
|
|
outcome |
|
|
|
outcome |
|
|
|
} |
|
|
|
} |
|
|
|