xo-reader: refactor: + expect_type_xs [wip]
This commit is contained in:
parent
08497a371c
commit
1087e57a62
5 changed files with 55 additions and 2 deletions
25
include/xo/reader/expect_type_xs.hpp
Normal file
25
include/xo/reader/expect_type_xs.hpp
Normal 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 */
|
||||
|
|
@ -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_; }
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
24
src/reader/expect_type_xs.cpp
Normal file
24
src/reader/expect_type_xs.cpp
Normal 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 */
|
||||
Loading…
Add table
Add a link
Reference in a new issue