diff --git a/parser/src/lib.rs b/parser/src/lib.rs index b51bcb8..7bd93e5 100644 --- a/parser/src/lib.rs +++ b/parser/src/lib.rs @@ -5,17 +5,14 @@ extern crate sibillexer; extern crate sibiltypes; -mod list_parser; -mod node_parser; -mod program_parser; -mod sym_parser; +mod parsers; use std::iter::Peekable; use sibillexer::Result as LexerResult; use sibillexer::Lex; use sibiltypes::Obj; -use node_parser::{NodeParser, NodeParseResult}; -use program_parser::ProgramParser; +use parsers::{NodeParser, NodeParseResult}; +use parsers::ProgramParser; /// The output of calling `parse()` on a Parser is one of these Result objects. pub type Result = std::result::Result; diff --git a/parser/src/list_parser.rs b/parser/src/parsers/list.rs similarity index 95% rename from parser/src/list_parser.rs rename to parser/src/parsers/list.rs index f8da430..93317a7 100644 --- a/parser/src/list_parser.rs +++ b/parser/src/parsers/list.rs @@ -1,11 +1,11 @@ -/* parser/src/list_parser.rs +/* parser/src/parsers/list.rs * Eryn Wells */ use sibillexer::{Lex, Token}; use sibiltypes::{Obj, Pair}; -use node_parser::{NodeParser, NodeParseResult}; -use sym_parser::SymParser; +use parsers::{NodeParser, NodeParseResult}; +use parsers::sym::SymParser; #[derive(Debug)] pub struct ListParser { diff --git a/parser/src/node_parser.rs b/parser/src/parsers/mod.rs similarity index 93% rename from parser/src/node_parser.rs rename to parser/src/parsers/mod.rs index ac9fa98..e53d6ca 100644 --- a/parser/src/node_parser.rs +++ b/parser/src/parsers/mod.rs @@ -1,7 +1,13 @@ -/* node_parser.rs +/* parser/src/parsers/mod.rs * Eryn Wells */ +mod list; +mod program; +mod sym; + +pub use self::program::ProgramParser; + use std::fmt::Debug; use sibillexer::Lex; use sibiltypes::Obj; @@ -31,8 +37,10 @@ impl NodeParseResult { pub trait NodeParser: Debug { /// Called on a NodeParser when a Lex is encountered in the input. fn parse(&mut self, lex: &Lex) -> NodeParseResult; + /// Called on a NodeParser when None is encountered in the input. fn none(&mut self) -> NodeParseResult; + /// Called on a NodeParser when a NodeParser created by this one returns an object via /// `NodeParseResult::Complete`. fn subparser_completed(&mut self, obj: Obj) -> NodeParseResult; diff --git a/parser/src/program_parser.rs b/parser/src/parsers/program.rs similarity index 91% rename from parser/src/program_parser.rs rename to parser/src/parsers/program.rs index d8ce16e..b9822c5 100644 --- a/parser/src/program_parser.rs +++ b/parser/src/parsers/program.rs @@ -4,9 +4,9 @@ use sibillexer::{Lex, Token}; use sibiltypes::Obj; -use list_parser::ListParser; -use node_parser::{NodeParser, NodeParseResult}; -use sym_parser::SymParser; +use parsers::{NodeParser, NodeParseResult}; +use parsers::list::ListParser; +use parsers::sym::SymParser; #[derive(Debug)] pub struct ProgramParser; diff --git a/parser/src/sym_parser.rs b/parser/src/parsers/sym.rs similarity index 95% rename from parser/src/sym_parser.rs rename to parser/src/parsers/sym.rs index cb51116..70d70f3 100644 --- a/parser/src/sym_parser.rs +++ b/parser/src/parsers/sym.rs @@ -4,7 +4,7 @@ use sibillexer::{Lex, Token}; use sibiltypes::{Obj, Sym}; -use node_parser::{NodeParser, NodeParseResult}; +use parsers::{NodeParser, NodeParseResult}; #[derive(Debug)] pub struct SymParser;