diff options
| author | Mel <einebeere@gmail.com> | 2021-10-23 22:01:52 +0200 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2021-10-23 22:01:52 +0200 |
| commit | 8a6eb35a900081967db16d313ab7ed470de6570f (patch) | |
| tree | d58dd702d8a742c7554545bc4e291480649e3663 /src/parse/ast/expression.rs | |
| parent | da14afd74e1659af6ce4553360ac5dd0ce933db8 (diff) | |
| download | rabbithole-8a6eb35a900081967db16d313ab7ed470de6570f.tar.zst rabbithole-8a6eb35a900081967db16d313ab7ed470de6570f.zip | |
Loop expressions and concrete walker errors.
Diffstat (limited to 'src/parse/ast/expression.rs')
| -rw-r--r-- | src/parse/ast/expression.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/parse/ast/expression.rs b/src/parse/ast/expression.rs index 1749c40..c7f6d9b 100644 --- a/src/parse/ast/expression.rs +++ b/src/parse/ast/expression.rs @@ -1,6 +1,8 @@ use std::fmt::{self, Display, Formatter}; -use super::nodes::{BinaryOperator, BlockNode, FnNode, Identifier, IfNode, Literal, UnaryOperator}; +use super::nodes::{ + BinaryOperator, BlockNode, FnNode, Identifier, IfNode, Literal, LoopNode, UnaryOperator, +}; #[derive(Debug, Clone)] pub enum Expression { @@ -17,6 +19,7 @@ pub enum Expression { Block(Box<BlockNode>), Fn(Box<FnNode>), If(Box<IfNode>), + Loop(Box<LoopNode>), Literal(Literal), Identifier(Identifier), } @@ -97,6 +100,16 @@ impl Expression { Self::block_fmt(f, e, depth + 1)?; } } + Expression::Loop(node) => { + writeln!(f, "{}Loop:", pad)?; + if let Some(loop_condition) = &node.condition { + writeln!(f, "{}- Condition:", pad)?; + loop_condition.nested_fmt(f, depth + 1)?; + } + + writeln!(f, "{}- Body:", pad)?; + Self::block_fmt(f, &node.body, depth + 1)?; + } } Ok(()) |
