Expand the parser a bit, loop over Lexes and print them

This commit is contained in:
Eryn Wells 2017-01-12 21:18:07 -08:00
parent 5ec2a11df1
commit bcedfe2f81

View file

@ -4,8 +4,11 @@
mod nodes; mod nodes;
use lexer::Lex;
use lexer::Lexer; use lexer::Lexer;
use lexer::Token;
use self::nodes::Program; use self::nodes::Program;
use self::nodes::Expression;
pub struct Parser { pub struct Parser {
lexer: Lexer, lexer: Lexer,
@ -16,11 +19,27 @@ impl Parser {
Parser { lexer: lexer } Parser { lexer: lexer }
} }
pub fn parse(&mut self) -> Program { pub fn parse(&mut self) -> Result<Program, Error> {
Program { } Ok(self.parse_program())
} }
} }
impl Parser {
fn parse_program(&mut self) -> Program {
let mut forms: Vec<Expression> = Vec::new();
while let Some(lex) = self.lexer.next() {
println!("{:?}", lex);
}
forms.push(Expression::EOF);
Program::new(forms)
}
}
pub struct Error {
lex: Lexer,
desc: String,
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;