From 5c71e53c6b0ad1c9c5eabbdd539d94e3a170e7f8 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sat, 20 Jun 2015 06:03:15 -0400 Subject: [PATCH] distinguish lifetimes of the state table from the underlying grammar --- src/lr1/interpret.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/lr1/interpret.rs b/src/lr1/interpret.rs index 20e8a86..e4ec1a7 100644 --- a/src/lr1/interpret.rs +++ b/src/lr1/interpret.rs @@ -11,22 +11,21 @@ pub enum ParseTree { Terminal(TerminalString), } -pub fn interpret<'g,TOKENS>(states: &'g [State<'g>], tokens: TOKENS) - -> Result +pub fn interpret(states: &[State], tokens: TOKENS) -> Result where TOKENS: Iterator { let mut m = Machine::new(states); m.execute(tokens) } -struct Machine<'grammar> { - states: &'grammar [State<'grammar>], - state_stack: Vec<&'grammar State<'grammar>>, +struct Machine<'states, 'grammar:'states> { + states: &'states [State<'grammar>], + state_stack: Vec<&'states State<'grammar>>, data_stack: Vec, } -impl<'grammar> Machine<'grammar> { - fn new(states: &'grammar [State<'grammar>]) -> Machine<'grammar> { +impl<'states, 'grammar> Machine<'states, 'grammar> { + fn new(states: &'states [State<'grammar>]) -> Machine<'states,'grammar> { Machine { states: states, state_stack: vec![], data_stack: vec![] }