From 6b65cd4fd442d6dd65d79f7215aa18079f20846b Mon Sep 17 00:00:00 2001 From: Araozu Date: Tue, 2 Jan 2024 09:50:48 -0500 Subject: [PATCH] Simple codegen for function calls --- src/codegen/expression.rs | 2 +- src/codegen/function_call.rs | 9 +++++++++ src/codegen/mod.rs | 1 + src/codegen/statement.rs | 5 ++++- 4 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 src/codegen/function_call.rs diff --git a/src/codegen/expression.rs b/src/codegen/expression.rs index 68338e3..e2097a6 100644 --- a/src/codegen/expression.rs +++ b/src/codegen/expression.rs @@ -13,7 +13,7 @@ impl Transpilable for Expression { match self { Expression::Number(value) => format!("{}", value), Expression::String(value) => { - format!("\"{}\"", *value) + format!("{}", *value) } Expression::Boolean(value) => String::from(if *value { "true" } else { "false" }), Expression::Identifier(value) => format!("{}", *value), diff --git a/src/codegen/function_call.rs b/src/codegen/function_call.rs new file mode 100644 index 0000000..33b9f12 --- /dev/null +++ b/src/codegen/function_call.rs @@ -0,0 +1,9 @@ +use crate::syntax::ast::functions::FunctionCall; + +use super::Transpilable; + +impl Transpilable for FunctionCall { + fn transpile(&self) -> String { + format!("{}();", self.identifier) + } +} diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs index 0f543b7..86b47fc 100644 --- a/src/codegen/mod.rs +++ b/src/codegen/mod.rs @@ -3,6 +3,7 @@ use crate::syntax::ast::ModuleAST; mod binding; mod block; mod expression; +mod function_call; mod function_declaration; mod module_ast; mod statement; diff --git a/src/codegen/statement.rs b/src/codegen/statement.rs index a2cc6c0..6792eec 100644 --- a/src/codegen/statement.rs +++ b/src/codegen/statement.rs @@ -4,6 +4,9 @@ use super::Transpilable; impl Transpilable for Statement { fn transpile(&self) -> String { - String::from("// TODO (statement)") + match self { + Statement::Binding(binding) => binding.transpile(), + Statement::FunctionCall(function_call) => function_call.transpile(), + } } }