diff --git a/scie-grammar/src/grammar/grammar.rs b/scie-grammar/src/grammar/grammar.rs index c5d9dbadfc0f754319254b6e1c2aa47d0af3d1e2..2a4fda51825ad5c7703304b9d1ea9384b05a1fa4 100644 --- a/scie-grammar/src/grammar/grammar.rs +++ b/scie-grammar/src/grammar/grammar.rs @@ -165,7 +165,6 @@ impl Grammar { current_state = state; } else { is_first_line = false; - // current_state.as_ref().unwrap().reset(); current_state.reset(); } @@ -765,7 +764,7 @@ hellomake: $(OBJ) #[test] fn should_resolve_make_file_error_issues2() { let code = "hellomake: $(OBJ) - $(CC) -o $@ $^ $(CFLAGS)"; +\t$(CC) -o $@ $^ $(CFLAGS)"; let grammar = to_grammar_with_code("test-cases/first-mate/fixtures/makefile.json", code); debug_output(&grammar, String::from("program.json")); } diff --git a/scie-grammar/src/grammar/stack_element.rs b/scie-grammar/src/grammar/stack_element.rs index 1aaac351655355c3eaca4df25a80791d8af3b112..b649c4ec41fead819115f07b22d292dc9da2352b 100644 --- a/scie-grammar/src/grammar/stack_element.rs +++ b/scie-grammar/src/grammar/stack_element.rs @@ -111,5 +111,25 @@ impl StackElement { return self; } - pub fn reset(&mut self) {} + pub fn reset(&mut self) { + let mut has_parent = true; + if let None = self.parent { + has_parent = false; + self.enter_pos = -1; + self.anchor_pos = -1; + } + + while has_parent { + self.enter_pos = -1; + self.anchor_pos = -1; + + if let None = self.parent { + has_parent = false; + } else { + // todo: check parent not null + // self = self.parent.unwrap().borrow_mut(); + self.parent = None; + } + } + } }