summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/holyparser.cpp9
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);