From 1f4228b8876765b5236952ccc2d2a3d07e613aae Mon Sep 17 00:00:00 2001 From: greg Date: Sun, 29 Apr 2018 03:31:23 -0700 Subject: [PATCH] Successfully passing state handle to pass functions --- schala-lang/src/lib.rs | 6 +++--- schala-repl/src/language.rs | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/schala-lang/src/lib.rs b/schala-lang/src/lib.rs index d656f65..b63207f 100644 --- a/schala-lang/src/lib.rs +++ b/schala-lang/src/lib.rs @@ -40,11 +40,11 @@ impl Schala { } } -fn tokenizing_stage(input: &str) -> Result, ()> { +fn tokenizing_stage(handle: &mut Schala, input: &str) -> Result, ()> { Ok(tokenizing::tokenize(input)) } -fn parsing_stage(input: Vec) -> Result { +fn parsing_stage(handle: &mut Schala, input: Vec) -> Result { parsing::parse(input).0 } @@ -59,7 +59,7 @@ impl ProgrammingLanguageInterface for Schala { fn execute_pipeline(&mut self, input: &str, options: &EvalOptions) -> FinishedComputation { //let chain = pass_chain![tokenizing::tokenize, parsing::parse]; - let chain = pass_chain![self, tokenizing_stage, parsing_stage]; + let mut chain = pass_chain![self, tokenizing_stage, parsing_stage]; chain(input) } diff --git a/schala-repl/src/language.rs b/schala-repl/src/language.rs index 63356cc..ecb218f 100644 --- a/schala-repl/src/language.rs +++ b/schala-repl/src/language.rs @@ -182,8 +182,8 @@ pub trait ProgrammingLanguageInterface { #[macro_export] macro_rules! pass_chain { - ($self:expr, $($pass:path), *) => { - |text_input| { pass_chain_helper! { $self, text_input $(, $pass)* } } + ($state:expr, $($pass:path), *) => { + |text_input| { pass_chain_helper! { $state, text_input $(, $pass)* } } }; } @@ -191,13 +191,13 @@ macro_rules! pass_chain { //but should in the future return a FinishedComputation #[macro_export] macro_rules! pass_chain_helper { - ($self:expr, $input:expr, $pass:path $(, $rest:path)*) => { + ($state:expr, $input:expr, $pass:path $(, $rest:path)*) => { { let pass_name = stringify!($pass); println!("Running pass {}", pass_name); - let output = $pass($input); + let output = $pass($state, $input); match output { - Ok(result) => pass_chain_helper! { $self, result $(, $rest)* }, + Ok(result) => pass_chain_helper! { $state, result $(, $rest)* }, Err(err) => { let comp = UnfinishedComputation::default(); comp.output(Err(format!("Pass {} failed with {:?}", pass_name, err))) @@ -206,7 +206,7 @@ macro_rules! pass_chain_helper { } }; // Done - ($self:expr, $final_output:expr) => { + ($state:expr, $final_output:expr) => { { let comp = UnfinishedComputation::default(); let final_output: FinishedComputation = comp.output(Ok(format!("{:?}", $final_output)));