aboutsummaryrefslogtreecommitdiffhomepage
path: root/parse.c
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-07-29 06:09:06 +0900
committernsfisis <nsfisis@gmail.com>2025-08-15 10:04:35 +0900
commitf91a10ae153f41c46729605ecf0023d11ada07b8 (patch)
tree0bf858a43490f88e20fd4006543e069cfa54b43d /parse.c
parentbd5bbdebf116bb03da335d0e18a55a5597b55548 (diff)
downloadducc-f91a10ae153f41c46729605ecf0023d11ada07b8.tar.gz
ducc-f91a10ae153f41c46729605ecf0023d11ada07b8.tar.zst
ducc-f91a10ae153f41c46729605ecf0023d11ada07b8.zip
feat: implement empty statements (only semicolon)
Diffstat (limited to 'parse.c')
-rw-r--r--parse.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/parse.c b/parse.c
index 9c635be..469ed49 100644
--- a/parse.c
+++ b/parse.c
@@ -703,6 +703,11 @@ AstNode* parse_block_stmt(Parser* p) {
return list;
}
+AstNode* parse_empty_stmt(Parser* p) {
+ next_token(p);
+ return ast_new(AstNodeKind_nop);
+}
+
AstNode* parse_stmt(Parser* p) {
Token* t = peek_token(p);
if (t->kind == TokenKind_keyword_return) {
@@ -721,6 +726,8 @@ AstNode* parse_stmt(Parser* p) {
return parse_continue_stmt(p);
} else if (t->kind == TokenKind_brace_l) {
return parse_block_stmt(p);
+ } else if (t->kind == TokenKind_semicolon) {
+ return parse_empty_stmt(p);
} else if (is_type_token(p, t)) {
return parse_var_decl(p);
} else {