From bf7416a3ef9f0b787dcaebf816f3f3e6e385ff42 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Thu, 13 Aug 2026 22:55:06 +0200 Subject: Implement fixed-size integers --- boot/validation.cc | 56 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 51 insertions(+), 5 deletions(-) (limited to 'boot/validation.cc') diff --git a/boot/validation.cc b/boot/validation.cc index b29381a..0c03fd0 100644 --- a/boot/validation.cc +++ b/boot/validation.cc @@ -55,6 +55,38 @@ namespace elna::boot { } + void validation_visitor::visit(assign_statement *) + { + } + + void validation_visitor::visit(if_statement *) + { + } + + void validation_visitor::visit(while_statement *) + { + } + + void validation_visitor::visit(repeat_statement *) + { + } + + void validation_visitor::visit(for_statement *) + { + } + + void validation_visitor::visit(defer_statement *) + { + } + + void validation_visitor::visit(empty_statement *) + { + } + + void validation_visitor::visit(procedure_call *) + { + } + void validation_visitor::visit(unit *unit) { for (procedure_declaration *procedure : unit->procedures) @@ -73,17 +105,31 @@ namespace elna::boot { auto procedure = this->bag.lookup(declaration->identifier.name())->is_procedure(); this->bag.enter(procedure->scope); - } - walking_visitor::visit(declaration); - if (declaration->body.has_value()) - { + for (auto *statement : declaration->body.value().entry_point) + { + statement->accept(this); + } this->bag.leave(); } } void validation_visitor::visit(case_statement *statement) { - walking_visitor::visit(statement); + for (const switch_case& case_block : statement->cases) + { + for (auto *block_statement : case_block.statements) + { + block_statement->accept(this); + } + } + if (statement->alternative != nullptr) + { + for (auto *block_statement : *statement->alternative) + { + block_statement->accept(this); + } + } + std::unordered_map seen; for (const auto& case_block : statement->cases) { -- cgit v1.2.3