From ba9a9199d01b0fdd4bf9a54914f8058bf71f30c5 Mon Sep 17 00:00:00 2001
From: Ferenc Szontágh <szf@fsociety.hu>
Date: Thu, 17 Apr 2025 16:03:01 +0000
Subject: [PATCH] unary and binary operations
---
src/Symbols/SymbolTable.hpp | 31 +++++++++++++++----------------
1 files changed, 15 insertions(+), 16 deletions(-)
diff --git a/src/Symbols/SymbolTable.hpp b/src/Symbols/SymbolTable.hpp
index 0c4c7da..f774f8d 100644
--- a/src/Symbols/SymbolTable.hpp
+++ b/src/Symbols/SymbolTable.hpp
@@ -1,4 +1,3 @@
-// SymbolTable.hpp
#ifndef SYMBOL_TABLE_HPP
#define SYMBOL_TABLE_HPP
@@ -10,12 +9,9 @@
namespace Symbols {
class SymbolTable {
- NamespaceMap symbols_;
- std::shared_ptr<SymbolTable> parent_ = nullptr;
+ NamespaceMap symbols_;
public:
- SymbolTable(std::shared_ptr<SymbolTable> parent = nullptr) : parent_(std::move(parent)) {}
-
void define(const std::string & ns, const SymbolPtr & symbol) { symbols_[ns][symbol->name()] = symbol; }
bool exists(const std::string & ns, const std::string & name) const { return get(ns, name) != nullptr; }
@@ -29,10 +25,6 @@
return it->second;
}
}
- // Rekurzívan keresünk a szülő scope-ban
- if (parent_) {
- return parent_->get(ns, name);
- }
return nullptr;
}
@@ -43,12 +35,21 @@
}
}
- std::vector<SymbolPtr> listAll(const std::string & ns) const {
+ std::vector<std::string> listNSs() {
+ std::vector<std::string> result;
+ for (const auto & [ns, _] : symbols_) {
+ result.push_back(ns);
+ }
+ return result;
+ }
+
+ std::vector<SymbolPtr> listAll(const std::string & prefix = "") const {
std::vector<SymbolPtr> result;
- auto it = symbols_.find(ns);
- if (it != symbols_.end()) {
- for (const auto & [_, sym] : it->second) {
- result.push_back(sym);
+ for (const auto & [ns, map] : symbols_) {
+ if (prefix.empty() || ns.starts_with(prefix)) {
+ for (const auto & [_, sym] : map) {
+ result.push_back(sym);
+ }
}
}
return result;
@@ -57,8 +58,6 @@
void clear(const std::string & ns) { symbols_.erase(ns); }
void clearAll() { symbols_.clear(); }
-
- std::shared_ptr<SymbolTable> getParent() const { return parent_; }
};
} // namespace Symbols
--
Gitblit v1.9.3