diff options
author | Slendi <slendi@socopon.com> | 2023-08-06 19:37:39 +0300 |
---|---|---|
committer | Slendi <slendi@socopon.com> | 2023-08-06 19:37:39 +0300 |
commit | d908936c7ef41ef38d18cb203ff17cd686385f3b (patch) | |
tree | 6d734bd8e70cd2e9aa5da3fc00f2966a094f3d15 | |
parent | cbfd8e3fe8123ec680ee7c3e62dc47ba1bf0e497 (diff) |
Signed-off-by: Slendi <slendi@socopon.com>
-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); |