xo-reader: refactor: + expect_type_xs [wip]

This commit is contained in:
Roland Conybeare 2024-08-10 17:02:50 -05:00
commit 1087e57a62
5 changed files with 55 additions and 2 deletions

View file

@ -0,0 +1,25 @@
/* file expect_type_xs.hpp
*
* author: Roland Conybeare, Aug 2024
*/
#pragma once
#include "exprstate.hpp"
namespace xo {
namespace scm {
/** @class expect_type_xs
* @brief state-machine for accepting a typename-expression
**/
class expect_type_xs : public exprstate {
public:
expect_type_xs();
static std::unique_ptr<expect_type_xs> make();
};
} /*namespace scm*/
} /*namespace xo*/
/* end expect_type_xs.hpp */

View file

@ -75,9 +75,11 @@ namespace xo {
return std::make_unique<exprstate>(exprstate(exprstatetype::expect_symbol));
}
#endif
#ifdef RELOCATED
static std::unique_ptr<exprstate> expect_type() {
return std::make_unique<exprstate>(exprstate(exprstatetype::expect_type));
}
#endif
exprstatetype exs_type() const { return exs_type_; }

View file

@ -10,7 +10,8 @@ set(SELF_SRCS
paren_xs.cpp
exprseq_xs.cpp
expect_expr_xs.cpp
expect_symbol_xs.cpp)
expect_symbol_xs.cpp
expect_type_xs.cpp)
xo_add_shared_library4(${SELF_LIB} ${PROJECT_NAME}Targets ${PROJECT_VERSION} 1 ${SELF_SRCS})
xo_dependency(${SELF_LIB} xo_expression)

View file

@ -2,6 +2,7 @@
#include "define_xs.hpp"
#include "expect_expr_xs.hpp"
#include "expect_type_xs.hpp"
namespace xo {
namespace scm {
@ -321,7 +322,7 @@ namespace xo {
if (this->defxs_type_ == defexprstatetype::def_1) {
this->defxs_type_ = defexprstatetype::def_2;
p_stack->push_exprstate(exprstate::expect_type());
p_stack->push_exprstate(expect_type_xs::make());
} else {
assert(false);
}

View file

@ -0,0 +1,24 @@
/* file expect_type_xs.cpp
*
* author: Roland Conybeare
*/
#include "expect_type_xs.hpp"
#include "exprstate.hpp"
namespace xo {
namespace scm {
std::unique_ptr<expect_type_xs>
expect_type_xs::make() {
return std::make_unique<expect_type_xs>(expect_type_xs());
}
expect_type_xs::expect_type_xs()
: exprstate(exprstatetype::expect_type)
{}
} /*namespace scm*/
} /*namespace xo*/
/* end expect_type_xs.cpp */