Rough outline of something resembling a parser (again...)
This commit is contained in:
parent
9f1500c1b6
commit
594b3e44e1
5 changed files with 56 additions and 0 deletions
|
@ -4,3 +4,5 @@ version = "0.1.0"
|
|||
authors = ["Eryn Wells <eryn@erynwells.me>"]
|
||||
|
||||
[dependencies]
|
||||
sibillexer = { path = "../lexer" }
|
||||
sibiltypes = { path = "../types" }
|
||||
|
|
|
@ -1,3 +1,23 @@
|
|||
/* parser/src/lib.rs
|
||||
* Eryn Wells <eryn@erynwells.me>
|
||||
*/
|
||||
|
||||
extern crate sibillexer;
|
||||
extern crate sibiltypes;
|
||||
|
||||
mod list;
|
||||
mod program;
|
||||
|
||||
use sibillexer::Lexer;
|
||||
|
||||
struct ParseError { }
|
||||
|
||||
type Result<T> = std::result::Result<T, ParseError>;
|
||||
|
||||
trait Parsable: Sized {
|
||||
fn parse(lexer: &Lexer) -> Result<Self>;
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
#[test]
|
||||
|
|
24
parser/src/list.rs
Normal file
24
parser/src/list.rs
Normal file
|
@ -0,0 +1,24 @@
|
|||
/* parser/src/list.rs
|
||||
* Eryn Wells <eryn@erynwells.me>
|
||||
*/
|
||||
|
||||
extern crate sibillexer;
|
||||
extern crate sibiltypes;
|
||||
|
||||
use sibillexer::Lexer;
|
||||
use sibillexer::Token;
|
||||
use sibiltypes::Value;
|
||||
use super::Parsable;
|
||||
use super::ParseError;
|
||||
use super::Result;
|
||||
|
||||
pub enum SExpression {
|
||||
Value(Box<Value>),
|
||||
List(Vec<SExpression>),
|
||||
}
|
||||
|
||||
impl Parsable for SExpression {
|
||||
fn parse(lexer: &Lexer) -> Result<SExpression> {
|
||||
Err(ParseError{ })
|
||||
}
|
||||
}
|
9
parser/src/program.rs
Normal file
9
parser/src/program.rs
Normal file
|
@ -0,0 +1,9 @@
|
|||
/* parser/src/program.rs
|
||||
* Eryn Wells <eryn@erynwells.me>
|
||||
*/
|
||||
|
||||
use list::SExpression;
|
||||
|
||||
struct Program {
|
||||
commands: Vec<SExpression>,
|
||||
}
|
|
@ -6,6 +6,7 @@ mod value;
|
|||
pub use bool::Bool;
|
||||
pub use char::Char;
|
||||
pub use number::Number;
|
||||
pub use value::Value;
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue