diff options
-rw-r--r-- | src/holyparser.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/holyparser.cpp b/src/holyparser.cpp index fbbc48d..89a6b63 100644 --- a/src/holyparser.cpp +++ b/src/holyparser.cpp @@ -331,7 +331,7 @@ std::vector<std::shared_ptr<ASTNode>> const HolyParser::parse_expression_list( } std::shared_ptr<ASTNode> node = parse_expression(); arguments.push_back(node); - if (m_tok == end) break; + if (m_tok == end || m_tok == TokenType::EndOfFile) break; expect(TokenType::Comma); } @@ -783,8 +783,11 @@ std::shared_ptr<ASTNode> const HolyParser::parse_statement() messages.push_back(Error("Unknown preprocessor derivative", m_tok.range)); next(); } - } else - fin = parse_expression(); // FIXME: Replace with expression list + } else { + fin = std::make_shared<ProgramNode>(ProgramNode()); + std::dynamic_pointer_cast<ProgramNode>(fin)->statements = parse_expression_list( + TokenType::Semicolon); // FIXME: Replace with expression list + } if (should_expect_semicolon) expect(TokenType::Semicolon); |