diff options
Diffstat (limited to 'src/parse')
| -rw-r--r-- | src/parse/ast.rs | 16 | ||||
| -rw-r--r-- | src/parse/mod.rs | 10 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/parse/ast.rs b/src/parse/ast.rs new file mode 100644 index 0000000..2f30eaf --- /dev/null +++ b/src/parse/ast.rs @@ -0,0 +1,16 @@ +use crate::lex::token::Token; + +#[derive(Debug)] +pub enum Expression { + Binary { + left: Box<Expression>, + op: Token, + right: Box<Expression>, + }, + Unary { + op: Token, + right: Box<Expression>, + }, + Group(Box<Expression>), + Literal(Token), +} diff --git a/src/parse/mod.rs b/src/parse/mod.rs new file mode 100644 index 0000000..2938131 --- /dev/null +++ b/src/parse/mod.rs @@ -0,0 +1,10 @@ +pub mod ast; + +use crate::parse::ast::Expression; +use std::iter::Peekable; + +use crate::lex::token::Token; + +pub fn parse(tokens: Peekable<impl Iterator<Item = Token>>) -> Expression { + todo!() +} |
