From bcedfe2f8151aaff60e68ebe1a979f8ba9c1e874 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Thu, 12 Jan 2017 21:18:07 -0800 Subject: [PATCH] Expand the parser a bit, loop over Lexes and print them --- src/parser/mod.rs | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/parser/mod.rs b/src/parser/mod.rs index 61e278e..7bd2c90 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -4,8 +4,11 @@ mod nodes; +use lexer::Lex; use lexer::Lexer; +use lexer::Token; use self::nodes::Program; +use self::nodes::Expression; pub struct Parser { lexer: Lexer, @@ -16,11 +19,27 @@ impl Parser { Parser { lexer: lexer } } - pub fn parse(&mut self) -> Program { - Program { } + pub fn parse(&mut self) -> Result { + Ok(self.parse_program()) } } +impl Parser { + fn parse_program(&mut self) -> Program { + let mut forms: Vec = 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)] mod tests { use super::*;