aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs
index e540192..6874762 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -43,14 +43,25 @@ mod ast {
#[derive(Debug, FromPest)]
#[pest_ast(rule(Rule::expression))]
pub struct Expression {
- pub leaves: Vec<Leaf>,
+ pub nodes: Vec<ExpressionNode>,
}
#[derive(Debug, FromPest)]
- #[pest_ast(rule(Rule::leaf))]
- pub enum Leaf {
+ #[pest_ast(rule(Rule::expression_node))]
+ pub enum ExpressionNode {
Symbol(Symbol),
+ Operator(Operator),
IntegerLiteral(IntegerLiteral),
+ Expression(Expression),
+ }
+
+ #[derive(Debug, FromPest)]
+ #[pest_ast(rule(Rule::operator))]
+ pub enum Operator {
+ SumOp,
+ SubtractOp,
+ DivideOp,
+ MultiplyOp,
}
#[derive(Debug, FromPest)]