From e4199d2837d2179f17e97b8d50366d96c8babded Mon Sep 17 00:00:00 2001 From: Cody Date: Mon, 27 Feb 2023 12:14:16 -0600 Subject: Added while loops & guessing game --- src/ast/parser.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/ast/parser.rs') diff --git a/src/ast/parser.rs b/src/ast/parser.rs index 842ad09..bc29f94 100644 --- a/src/ast/parser.rs +++ b/src/ast/parser.rs @@ -118,6 +118,10 @@ impl<'a> AstParser<'a> { return self.for_statement(); } + if self.advance_if_eq(&TokenType::While) { + return self.while_statement(); + } + // If we couldn't parse a statement return an expression statement self.expression_statement() } @@ -186,6 +190,13 @@ impl<'a> AstParser<'a> { } } + fn while_statement(&mut self) -> Stmt { + let condition = self.expression(); + let body = self.block(); + + Stmt::While { condition, body } + } + fn expression_statement(&mut self) -> Stmt { let expr = self.expression(); -- cgit v1.2.3