[parser] Skeleton IdParser and ListParser for Ids and Lists respectively
This commit is contained in:
parent
281c29ee26
commit
cabe40bd7a
2 changed files with 40 additions and 8 deletions
|
@ -5,17 +5,18 @@
|
|||
extern crate sibillexer;
|
||||
extern crate sibiltypes;
|
||||
|
||||
mod node_parser;
|
||||
|
||||
use std::iter::Peekable;
|
||||
use sibillexer::Result as LexerResult;
|
||||
use sibillexer::Token;
|
||||
use sibiltypes::Object;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ParseError;
|
||||
use node_parser::{NodeParser, IdParser, ListParser};
|
||||
|
||||
pub type Result = std::result::Result<Object, ParseError>;
|
||||
|
||||
trait NodeParser {
|
||||
}
|
||||
#[derive(Debug)]
|
||||
pub struct ParseError;
|
||||
|
||||
pub struct Parser<T> where T: Iterator<Item=LexerResult> {
|
||||
input: Peekable<T>,
|
||||
|
@ -37,9 +38,10 @@ impl<T> Iterator for Parser<T> where T: Iterator<Item=LexerResult> {
|
|||
fn next(&mut self) -> Option<Self::Item> {
|
||||
loop {
|
||||
if let Some(lex) = self.input.next() {
|
||||
println!("{:?}", lex)
|
||||
}
|
||||
else {
|
||||
if let Ok(lex) = lex {
|
||||
} else {
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
30
parser/src/node_parser.rs
Normal file
30
parser/src/node_parser.rs
Normal file
|
@ -0,0 +1,30 @@
|
|||
/* node_parser.rs
|
||||
* Eryn Wells <eryn@erynwells.me>
|
||||
*/
|
||||
|
||||
pub trait NodeParser {
|
||||
}
|
||||
|
||||
pub struct IdParser {
|
||||
}
|
||||
|
||||
impl IdParser {
|
||||
pub fn new() -> IdParser {
|
||||
IdParser { }
|
||||
}
|
||||
}
|
||||
|
||||
impl NodeParser for IdParser {
|
||||
}
|
||||
|
||||
pub struct ListParser {
|
||||
}
|
||||
|
||||
impl ListParser {
|
||||
pub fn new() -> ListParser {
|
||||
ListParser { }
|
||||
}
|
||||
}
|
||||
|
||||
impl NodeParser for ListParser {
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue