From 64d560a1fc10bd058106a20c802505dd3473a33e Mon Sep 17 00:00:00 2001 From: greg Date: Fri, 12 Feb 2016 23:14:09 -0800 Subject: [PATCH] Still more work --- src/compilation.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/compilation.rs b/src/compilation.rs index c92e6d1..f11f21f 100644 --- a/src/compilation.rs +++ b/src/compilation.rs @@ -8,7 +8,7 @@ use self::iron_llvm::core; use self::iron_llvm::core::types::{RealTypeCtor, RealTypeRef}; use self::iron_llvm::{LLVMRef, LLVMRefCtor}; -use parser::{ParseResult, AST, ASTNode}; +use parser::{ParseResult, AST, ASTNode, Prototype, Expression}; pub struct Context { context: core::Context, @@ -96,3 +96,19 @@ impl IRBuilder for AST { result } } + +impl IRBuilder for ASTNode { + fn codegen(&self, context: &mut Context, module_provider: &mut ModuleProvider) -> IRBuildingResult { + match self { + &ASTNode::ExprNode(ref expression) => expression.codegen(context, module_provider), + &ASTNode::FuncNode(ref function) => function.codegen(context, module_provider), + } + } +} + +impl IRBuilder for Function { + fn codegen(&self, context: &mut Context, module_provider: &mut ModuleProvider) -> IRBuildingResult { + + + } +}