diff --git a/src/Parser.cpp b/src/Parser.cpp index 37aee12..f9a944b 100644 --- a/src/Parser.cpp +++ b/src/Parser.cpp @@ -51,6 +51,8 @@ Statement *Parser::statement() { return ifStatement(); if (match(WHILE)) return whileStatement(); + if (match(FOR)) + return forStatement(); if (match(LEFT_BRACE)) return new Block(blockStatement()); return expressionStatement(); @@ -67,9 +69,9 @@ std::vector Parser::blockStatement() { } Statement *Parser::ifStatement() { - consume(LEFT_PAREN, "expected ( after if"); + consume(LEFT_PAREN, "Expected ( after if"); Expr *expr = expression(); - consume(RIGHT_PAREN, "expected ) after if statement"); + consume(RIGHT_PAREN, "Expected ) after if statement"); Statement *thenBranch = statement(); @@ -105,6 +107,8 @@ Statement *Parser::forStatement() { else condition = expression(); + consume(SEMICOLON, "Expected ; after condition clause"); + Expr *increment; if (match(SEMICOLON)) increment = nullptr; diff --git a/test/lib b/test/lib index 3d73dee..b1a777f 160000 --- a/test/lib +++ b/test/lib @@ -1 +1 @@ -Subproject commit 3d73dee972d0db344bda9b659836612aba6a3564 +Subproject commit b1a777f31913f8a047f43b2a5f823e736e7f5082