diff options
| author | Eugen Wissner <belka@caraus.de> | 2026-07-04 22:29:49 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2026-07-04 22:29:49 +0200 |
| commit | 265e6d6a27eebbcafbd73f0da76e516a139f21d1 (patch) | |
| tree | fa52c0c4fcf281011987d850102cf6bbfc7f98a2 /include | |
| parent | e068da3028c1ae30741d2d1ceaca691b71830bfe (diff) | |
| download | elna-265e6d6a27eebbcafbd73f0da76e516a139f21d1.tar.gz | |
Allow empty statements
Diffstat (limited to 'include')
| -rw-r--r-- | include/elna/boot/ast.h | 10 | ||||
| -rw-r--r-- | include/elna/boot/semantic.h | 4 | ||||
| -rw-r--r-- | include/elna/gcc/elna-generic.h | 1 |
3 files changed, 14 insertions, 1 deletions
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<typename T> 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; }; } |
