From 68f651f90ac9bb42e6fcb461f72f82ee74df1fdd Mon Sep 17 00:00:00 2001 From: AidenRushbrooke <72034940+AidenRushbrooke@users.noreply.github.com> Date: Sat, 20 Nov 2021 02:24:52 +0000 Subject: Added initial support for do while loops --- src/Compiler/Parser.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/Compiler/Parser.java') diff --git a/src/Compiler/Parser.java b/src/Compiler/Parser.java index 5288c67..8bb8951 100644 --- a/src/Compiler/Parser.java +++ b/src/Compiler/Parser.java @@ -122,6 +122,9 @@ public class Parser { } private Statement doStatement(){ + if(matchAndAdvance(TokenType.WHILE)){ + return whileStatement(); + } Expression variable =expression(); matchOrError(TokenType.EQUALS, "'=' missing"); Expression start = expression(); @@ -137,6 +140,15 @@ public class Parser { } + private Statement whileStatement(){ + matchOrError(TokenType.LEFT_PAREN, " missing '("); + Expression condition = expression(); + matchOrError(TokenType.RIGHT_PAREN, " missing ')"); + Statement.BlockStatement codeBlock = blockStatement(); + matchOrError(TokenType.DO, "Do while statements end with do"); + return new Statement.DoWhileStatement(condition,codeBlock); + } + private Statement expressionStatement(){ Expression expression = assignment(); return new Statement.ExpressionStatement(expression); -- cgit v1.2.3