From ff8912c68e877744f8b15070e098af786e7bd296 Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Thu, 14 May 2020 11:05:01 +0900 Subject: [PATCH] Add null statement --- parse.c | 7 ++++++- test.sh | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/parse.c b/parse.c index e869c96..f5c8498 100644 --- a/parse.c +++ b/parse.c @@ -91,8 +91,13 @@ static Node *compound_stmt(Token **rest, Token *tok) { return node; } -// expr-stmt = expr ";" +// expr-stmt = expr? ";" static Node *expr_stmt(Token **rest, Token *tok) { + if (equal(tok, ";")) { + *rest = tok->next; + return new_node(ND_BLOCK); + } + Node *node = new_unary(ND_EXPR_STMT, expr(&tok, tok)); *rest = skip(tok, ";"); return node; diff --git a/test.sh b/test.sh index c4c2e67..34ce00c 100755 --- a/test.sh +++ b/test.sh @@ -60,5 +60,6 @@ assert 2 '{ 1; return 2; 3; }' assert 3 '{ 1; 2; return 3; }' assert 3 '{ {1; {2;} return 3;} }' +assert 5 '{ ;;; return 5; }' echo OK -- GitLab