summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSlendi <slendi@socopon.com>2023-08-06 19:37:39 +0300
committerSlendi <slendi@socopon.com>2023-08-06 19:37:39 +0300
commitd908936c7ef41ef38d18cb203ff17cd686385f3b (patch)
tree6d734bd8e70cd2e9aa5da3fc00f2966a094f3d15
parentcbfd8e3fe8123ec680ee7c3e62dc47ba1bf0e497 (diff)
Add support for expression lists in statementsHEADmaster
Signed-off-by: Slendi <slendi@socopon.com>
-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);