[parser] Add parsers field to Parser

This will be a stack of node-specific parsers. As you descend the tree, a new
parser will be created for each node we visit.
This commit is contained in:
Eryn Wells 2018-08-19 22:04:03 -07:00
parent 52ede10d5e
commit d7bffdc432

View file

@ -9,17 +9,25 @@ use std::iter::Peekable;
use sibillexer::Result as LexerResult;
use sibiltypes::Object;
#[derive(Debug)]
pub struct ParseError;
pub type Result = std::result::Result<Object, ParseError>;
trait NodeParser {
}
pub struct Parser<T> where T: Iterator<Item=LexerResult> {
input: Peekable<T>,
parsers: Vec<Box<NodeParser>>,
}
impl<T> Parser<T> where T: Iterator<Item=LexerResult> {
pub fn new(input: T) -> Parser<T> {
Parser { input: input.peekable() }
Parser {
input: input.peekable(),
parsers: Vec::new(),
}
}
}
@ -35,6 +43,7 @@ impl<T> Iterator for Parser<T> where T: Iterator<Item=LexerResult> {
break;
}
}
assert_eq!(self.parsers.len(), 0);
None
}
}