From 6c44d295dbd15cfbb679c6f7a7de07b840ba3090 Mon Sep 17 00:00:00 2001 From: greg Date: Fri, 4 Mar 2016 14:32:22 -0800 Subject: [PATCH] Framework for compilation --- src/compilation.rs | 9 +++++++-- src/main.rs | 16 ++++++++++++---- test.lang | 4 ++-- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/compilation.rs b/src/compilation.rs index 32ae539..146b78b 100644 --- a/src/compilation.rs +++ b/src/compilation.rs @@ -10,6 +10,12 @@ use self::iron_llvm::{LLVMRef, LLVMRefCtor}; use parser::{ParseResult, AST, ASTNode, Prototype, Function, Expression}; +pub fn compile_ast(ast: AST) { + println!("Compiling!"); + +} + +/* pub struct Context { context: core::Context, builder: core::Builder, @@ -117,5 +123,4 @@ impl IRBuilder for Expression { unimplemented!() } } - - +*/ diff --git a/src/main.rs b/src/main.rs index 529320d..4b3f74b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,6 +17,8 @@ mod parser; use eval::{Evaluator}; mod eval; +use compilation::{compile_ast}; +mod compilation; fn main() { let args: Vec = std::env::args().collect(); @@ -42,10 +44,16 @@ fn run_noninteractive(filename: &String) { Err(err) => { println!("Parse error: {:?}", err); return; } }; - let mut evaluator = Evaluator::new(); - let results = evaluator.run(ast); - for result in results.iter() { - println!("{}", result); + let compile = true; + + if compile { + compile_ast(ast); + } else { + let mut evaluator = Evaluator::new(); + let results = evaluator.run(ast); + for result in results.iter() { + println!("{}", result); + } } } diff --git a/test.lang b/test.lang index 37075bf..98c6ce0 100644 --- a/test.lang +++ b/test.lang @@ -1,4 +1,4 @@ -let a = 1 -let b = 2 +a = 1 +b = 2 a + b