From 42147bb7c0ae5ba7eba56b6c14858a086fa0ba9b Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Wed, 19 Nov 2025 12:42:31 -0500 Subject: [PATCH] xo-expression/xo-reader: refactor Environment -> SymbolTable --- include/xo/reader/envframe.hpp | 2 +- include/xo/reader/envframestack.hpp | 14 +++++++------- include/xo/reader/lambda_xs.hpp | 6 +++--- include/xo/reader/let1_xs.hpp | 4 ++-- include/xo/reader/parserstatemachine.hpp | 8 ++++---- src/reader/envframestack.cpp | 10 +++++----- src/reader/lambda_xs.cpp | 2 +- src/reader/let1_xs.cpp | 8 ++++---- src/reader/parser.cpp | 8 ++++---- src/reader/parserstatemachine.cpp | 8 ++++---- 10 files changed, 35 insertions(+), 35 deletions(-) diff --git a/include/xo/reader/envframe.hpp b/include/xo/reader/envframe.hpp index 237b1402..0dbd96e5 100644 --- a/include/xo/reader/envframe.hpp +++ b/include/xo/reader/envframe.hpp @@ -8,7 +8,7 @@ xxx; #include "xo/expression/Variable.hpp" -#include "xo/expression/LocalEnv.hpp" +#include "xo/expression/LocalSymtab.hpp" #include namespace xo { diff --git a/include/xo/reader/envframestack.hpp b/include/xo/reader/envframestack.hpp index 56063924..02194113 100644 --- a/include/xo/reader/envframestack.hpp +++ b/include/xo/reader/envframestack.hpp @@ -5,7 +5,7 @@ #pragma once -#include "xo/expression/LocalEnv.hpp" +#include "xo/expression/LocalSymtab.hpp" namespace xo { namespace scm { @@ -34,16 +34,16 @@ namespace xo { **/ void upsert(bp target); - bp top_envframe() const; - void push_envframe(const rp & x); - rp pop_envframe(); + bp top_envframe() const; + void push_envframe(const rp & x); + rp pop_envframe(); void reset_to_toplevel() { stack_.resize(1); } /** relative to top-of-stack. * 0 -> top (last in), z-1 -> bottom (first in) **/ - bp operator[](std::size_t i) { + bp operator[](std::size_t i) { std::size_t z = stack_.size(); assert(i < z); @@ -51,7 +51,7 @@ namespace xo { return stack_[z - i - 1].get(); } - bp operator[](std::size_t i) const { + bp operator[](std::size_t i) const { std::size_t z = stack_.size(); assert(i < z); @@ -63,7 +63,7 @@ namespace xo { bool pretty_print(const ppindentinfo & ppii) const; private: - std::vector> stack_; + std::vector> stack_; }; inline std::ostream & diff --git a/include/xo/reader/lambda_xs.hpp b/include/xo/reader/lambda_xs.hpp index 91118447..68dfc392 100644 --- a/include/xo/reader/lambda_xs.hpp +++ b/include/xo/reader/lambda_xs.hpp @@ -6,7 +6,7 @@ #pragma once #include "exprstate.hpp" -#include "xo/expression/LocalEnv.hpp" +#include "xo/expression/LocalSymtab.hpp" //#include namespace xo { @@ -55,8 +55,8 @@ namespace xo { **/ class lambda_xs : public exprstate { public: - using Environment = xo::scm::Environment; - using LocalEnv = xo::scm::LocalEnv; + using Environment = xo::scm::SymbolTable; + using LocalEnv = xo::scm::LocalSymtab; public: lambda_xs(); diff --git a/include/xo/reader/let1_xs.hpp b/include/xo/reader/let1_xs.hpp index 3377081f..cdd00df4 100644 --- a/include/xo/reader/let1_xs.hpp +++ b/include/xo/reader/let1_xs.hpp @@ -6,13 +6,13 @@ #pragma once #include "exprstate.hpp" -#include "xo/expression/LocalEnv.hpp" +#include "xo/expression/LocalSymtab.hpp" namespace xo { namespace scm { class let1_xs : public exprstate { public: - using LocalEnv = xo::scm::LocalEnv; + using LocalEnv = xo::scm::LocalSymtab; public: /** given local definition equivalent to diff --git a/include/xo/reader/parserstatemachine.hpp b/include/xo/reader/parserstatemachine.hpp index 76c4e03c..8988c6df 100644 --- a/include/xo/reader/parserstatemachine.hpp +++ b/include/xo/reader/parserstatemachine.hpp @@ -24,7 +24,7 @@ namespace xo { public: using Expression = xo::scm::Expression; using Variable = xo::scm::Variable; - using LocalEnv = xo::scm::LocalEnv; + using LocalEnv = xo::scm::LocalSymtab; using token_type = token; public: @@ -59,13 +59,13 @@ namespace xo { void upsert_var(bp x); /** @return available variable bindings in current parsing state **/ - bp top_envframe() const; + bp top_envframe() const; /** @return frame @p i levels from the top **/ - bp lookup_envframe(std::size_t i) const; + bp lookup_envframe(std::size_t i) const; /** push frame @p x (with new variable bindings) onto environment stack **/ void push_envframe(const rp & x); /** @return pop innermost environment frame and return it **/ - rp pop_envframe(); + rp pop_envframe(); /** @return number of stacked environment frames **/ size_t env_stack_size() const { return env_stack_.size(); } diff --git a/src/reader/envframestack.cpp b/src/reader/envframestack.cpp index 350bab48..19e15d27 100644 --- a/src/reader/envframestack.cpp +++ b/src/reader/envframestack.cpp @@ -8,11 +8,11 @@ #include "pretty_localenv.hpp" namespace xo { - using xo::scm::LocalEnv; + using xo::scm::LocalSymtab; using xo::scm::Variable; namespace scm { - bp + bp envframestack::top_envframe() const { std::size_t z = stack_.size(); @@ -25,7 +25,7 @@ namespace xo { } void - envframestack::push_envframe(const rp & frame) + envframestack::push_envframe(const rp & frame) { constexpr bool c_debug_flag = true; scope log(XO_DEBUG(c_debug_flag), @@ -38,7 +38,7 @@ namespace xo { stack_[z] = frame; } - rp + rp envframestack::pop_envframe() { constexpr bool c_debug_flag = true; scope log(XO_DEBUG(c_debug_flag)); @@ -48,7 +48,7 @@ namespace xo { if (z > 0) { //std::unique_ptr top = std::move(stack_[z-1]); - rp retval = stack_.at(z-1); + rp retval = stack_.at(z-1); stack_.resize(z-1); diff --git a/src/reader/lambda_xs.cpp b/src/reader/lambda_xs.cpp index eb54ea62..3cb0e98e 100644 --- a/src/reader/lambda_xs.cpp +++ b/src/reader/lambda_xs.cpp @@ -13,7 +13,7 @@ namespace xo { using xo::scm::Lambda; - using xo::scm::LocalEnv; + using xo::scm::LocalSymtab; namespace scm { const char * diff --git a/src/reader/let1_xs.cpp b/src/reader/let1_xs.cpp index 619d677c..2a65b2a3 100644 --- a/src/reader/let1_xs.cpp +++ b/src/reader/let1_xs.cpp @@ -17,8 +17,8 @@ namespace xo { using Apply = xo::scm::Apply; using Lambda = xo::scm::Lambda; using LambdaAccess = xo::scm::LambdaAccess; - using Environment = xo::scm::Environment; - using LocalEnv = xo::scm::LocalEnv; + using Environment = xo::scm::SymbolTable; + using LocalEnv = xo::scm::LocalSymtab; using Variable = xo::scm::Variable; namespace scm { @@ -37,7 +37,7 @@ namespace xo { const rp & rhs, parserstatemachine * p_psm) { - rp parent_env = p_psm->top_envframe().promote(); + rp parent_env = p_psm->top_envframe().promote(); rp var1 = Variable::make(lhs_name, rhs->valuetype()); rp let_env = LocalEnv::make1(var1, parent_env); @@ -136,7 +136,7 @@ namespace xo { std::string lambda_name = Variable::gensym("let1"); - rp parent_env = p_psm->top_envframe().promote(); + rp parent_env = p_psm->top_envframe().promote(); rp lambda = Lambda::make_from_env(lambda_name, diff --git a/src/reader/parser.cpp b/src/reader/parser.cpp index 41eeae96..2469593b 100644 --- a/src/reader/parser.cpp +++ b/src/reader/parser.cpp @@ -11,14 +11,14 @@ #include "xo/expression/DefineExpr.hpp" #include "xo/expression/Constant.hpp" #include "xo/expression/ConvertExpr.hpp" -#include "xo/expression/GlobalEnv.hpp" -//#include "xo/expression/LocalEnv.hpp" +#include "xo/expression/GlobalSymtab.hpp" +//#include "xo/expression/LocalSymtab.hpp" //#include #include namespace xo { using xo::scm::Expression; - using xo::scm::LocalEnv; + using xo::scm::LocalSymtab; using xo::reflect::TypeDescr; namespace scm { @@ -28,7 +28,7 @@ namespace xo { : psm_{debug_flag} { /* top-level environment. initially empty */ - rp toplevel_env = GlobalEnv::make_empty(); + rp toplevel_env = GlobalSymtab::make_empty(); this->psm_.env_stack_.push_envframe(toplevel_env); } diff --git a/src/reader/parserstatemachine.cpp b/src/reader/parserstatemachine.cpp index f85a0ae0..101c2ba9 100644 --- a/src/reader/parserstatemachine.cpp +++ b/src/reader/parserstatemachine.cpp @@ -11,7 +11,7 @@ #include "xo/expression/pretty_expression.hpp" namespace xo { - using xo::scm::LocalEnv; + using xo::scm::LocalSymtab; using xo::scm::Variable; namespace scm { @@ -45,12 +45,12 @@ namespace xo { xs_stack_.push_exprstate(std::move(x)); } - bp + bp parserstatemachine::top_envframe() const { return env_stack_.top_envframe(); } - bp + bp parserstatemachine::lookup_envframe(std::size_t i) const { return env_stack_[i]; } @@ -64,7 +64,7 @@ namespace xo { env_stack_.push_envframe(x); } - rp + rp parserstatemachine::pop_envframe() { scope log(XO_DEBUG(debug_flag_));