From 03c15c5f251e16e95da562ef41b3c66f4a90bb27 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Wed, 9 Sep 2020 21:21:04 +0100 Subject: [PATCH] Fix the compiler ns to have a very basic Compiler struct --- .gitignore | 11 +++++++++-- docs/examples/hello_world.srn | 2 ++ src/compiler.rs | 16 ++++++++++------ src/main.rs | 3 ++- 4 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 docs/examples/hello_world.srn diff --git a/.gitignore b/.gitignore index 4eb5aa4..1ff3945 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,10 @@ -/target -*~ +# will have compiled files and executables +debug/ +target/ +# These are backup files generated by rustfmt +**/*.rs.bk + +\#*# +.\#* +*~ \ No newline at end of file diff --git a/docs/examples/hello_world.srn b/docs/examples/hello_world.srn new file mode 100644 index 0000000..ac3b597 --- /dev/null +++ b/docs/examples/hello_world.srn @@ -0,0 +1,2 @@ +(defn hello! (name) + (println "Hello %s" name)) diff --git a/src/compiler.rs b/src/compiler.rs index 27ee7d7..5288472 100644 --- a/src/compiler.rs +++ b/src/compiler.rs @@ -36,7 +36,7 @@ use std::collections::HashMap; // } pub struct Compiler<'ctx> { - pub context: Context, + pub context: &'ctx Context, pub builder: Builder<'ctx>, // /// This hashmap contains all the namespaces that has to be compiled and // /// maps two different keys to the same namespace. Since namespace names @@ -54,10 +54,10 @@ pub struct Compiler<'ctx> { } impl<'ctx> Compiler<'ctx> { - pub fn new() -> Compiler<'ctx> { - let default_ns_name = "user"; + pub fn new(context: &'ctx Context) -> Compiler<'ctx> { + //let default_ns_name = "user"; // let builder = context.create_builder(); - let context = Context::create(); + //let context = Context::create(); //let user_ns = Namespace::new(&context, default_ns_name); //namespaces.insert(default_ns_name, &user_ns); // let fpm = PassManager::create(&user_ns.module); @@ -74,9 +74,9 @@ impl<'ctx> Compiler<'ctx> { // fpm.initialize(); //, builder, fpm, namespaces, Some(&default_ns_name) //Compiler::new(context) - let builder = context.create_builder(); + //let builder = context.create_builder(); Compiler { - builder: builder, + builder: context.create_builder(), context: context, namespaces: HashMap::new(), } @@ -126,3 +126,7 @@ impl<'ctx> Compiler<'ctx> { // generated_code // } } + +pub fn create_context() -> Context { + return Context::create(); +} diff --git a/src/main.rs b/src/main.rs index 69f4524..21364bc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,7 +16,8 @@ pub mod types; fn main() -> io::Result<()> { let yaml = load_yaml!("cli.yml"); let args = App::from(yaml).get_matches(); - //let compiler = create_compiler(); + let context = compiler::create_context(); + let compiler = compiler::Compiler::new(&context); if let Some(input) = args.value_of("INPUT") { let mut f = File::open(input)?;