|
|
|
@ -93,6 +93,7 @@ fn generate_expression(expr: Expression) -> String {
|
|
|
|
|
Expression::Bool(b) => b.to_string(), |
|
|
|
|
Expression::FunctionCall(name, e) => generate_function_call(name, e), |
|
|
|
|
Expression::Array(els) => generate_array(els), |
|
|
|
|
Expression::ArrayAccess(name, expr) => generate_array_access(name, *expr), |
|
|
|
|
Expression::BinOp(left, op, right) => generate_bin_op(*left, op, *right), |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -123,6 +124,10 @@ fn generate_array(elements: Vec<Expression>) -> String {
|
|
|
|
|
out_str |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fn generate_array_access(name: String, expr: Expression) -> String { |
|
|
|
|
format!("{n}[{e}]", n = name, e = generate_expression(expr)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fn generate_conditional( |
|
|
|
|
expr: Expression, |
|
|
|
|
if_state: Statement, |
|
|
|
@ -166,6 +171,7 @@ fn generate_function_call(func: String, args: Vec<Expression>) -> String {
|
|
|
|
|
Expression::Char(c) => c.to_string(), |
|
|
|
|
Expression::Int(i) => i.to_string(), |
|
|
|
|
Expression::Bool(v) => v.to_string(), |
|
|
|
|
Expression::ArrayAccess(name, expr) => generate_array_access(name, *expr), |
|
|
|
|
Expression::FunctionCall(n, a) => generate_function_call(n, a), |
|
|
|
|
Expression::Str(s) | Expression::Variable(s) => s, |
|
|
|
|
Expression::Array(_) => todo!(), |
|
|
|
|