From 265e6d6a27eebbcafbd73f0da76e516a139f21d1 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Sat, 4 Jul 2026 22:29:49 +0200 Subject: Allow empty statements --- include/elna/boot/ast.h | 10 ++++++++++ include/elna/boot/semantic.h | 4 +++- include/elna/gcc/elna-generic.h | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/elna/boot/ast.h b/include/elna/boot/ast.h index 7d94e84..03d3e27 100644 --- a/include/elna/boot/ast.h +++ b/include/elna/boot/ast.h @@ -87,6 +87,7 @@ namespace elna::boot template class literal; class defer_statement; + class empty_statement; /** * Interface for AST visitors. @@ -107,6 +108,7 @@ namespace elna::boot virtual void visit(return_statement *) = 0; virtual void visit(defer_statement *) = 0; virtual void visit(case_statement *) = 0; + virtual void visit(empty_statement *) = 0; virtual void visit(unit *) = 0; virtual void visit(program *) = 0; virtual void visit(binary_expression *) = 0; @@ -158,6 +160,7 @@ namespace elna::boot [[noreturn]] virtual void visit(while_statement *) override; [[noreturn]] virtual void visit(return_statement *) override; [[noreturn]] virtual void visit(defer_statement *) override; + [[noreturn]] virtual void visit(empty_statement *) override; [[noreturn]] virtual void visit(case_statement *) override; [[noreturn]] virtual void visit(procedure_call *) override; [[noreturn]] virtual void visit(unit *) override; @@ -758,6 +761,13 @@ namespace elna::boot virtual ~defer_statement() override; }; + class empty_statement : public statement + { + public: + empty_statement(const struct position); + void accept(parser_visitor *visitor) override; + }; + class binary_expression : public expression { expression *m_lhs; diff --git a/include/elna/boot/semantic.h b/include/elna/boot/semantic.h index 66eb0a7..7094ee9 100644 --- a/include/elna/boot/semantic.h +++ b/include/elna/boot/semantic.h @@ -109,6 +109,7 @@ namespace elna::boot void visit(while_statement *) override; void visit(return_statement *) override; void visit(defer_statement *) override; + void visit(empty_statement *) override; void visit(case_statement *) override; void visit(procedure_call *) override; void visit(unit *unit) override; @@ -151,7 +152,8 @@ namespace elna::boot void visit(import_declaration *) override; void visit(while_statement *statement) override; void visit(return_statement *statement) override; - void visit(defer_statement *statement) override; + void visit(defer_statement *) override; + void visit(empty_statement *statement) override; void visit(case_statement *statement) override; void visit(procedure_call *call) override; void visit(unit *unit) override; diff --git a/include/elna/gcc/elna-generic.h b/include/elna/gcc/elna-generic.h index 7490e92..9e148e6 100644 --- a/include/elna/gcc/elna-generic.h +++ b/include/elna/gcc/elna-generic.h @@ -92,6 +92,7 @@ namespace elna::gcc void visit(boot::while_statement *statement) override; void visit(boot::return_statement *statement) override; void visit(boot::defer_statement *statement) override; + void visit(boot::empty_statement *) override; void visit(boot::case_statement *statement) override; }; } -- cgit v1.2.3