xo-reader: streamline: + parserstatemachine::pop_exprstate() + use
This commit is contained in:
parent
bcb2af4a56
commit
4232da4ef2
12 changed files with 36 additions and 14 deletions
|
|
@ -3,6 +3,7 @@
|
|||
set(SELF_LIB xo_reader)
|
||||
set(SELF_SRCS
|
||||
parser.cpp
|
||||
parserstatemachine.cpp
|
||||
reader.cpp
|
||||
exprstate.cpp
|
||||
exprstatestack.cpp
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ namespace xo {
|
|||
if (this->defxs_type_ == defexprstatetype::def_6) {
|
||||
rp<Expression> expr = this->def_expr_;
|
||||
|
||||
std::unique_ptr<exprstate> self = p_stack->pop_exprstate();
|
||||
std::unique_ptr<exprstate> self = p_psm->pop_exprstate();
|
||||
|
||||
p_stack->top_exprstate().on_expr(expr, p_psm);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ namespace xo {
|
|||
#endif
|
||||
|
||||
#ifdef LATER
|
||||
p_stack->pop_exprstate();
|
||||
p_psm->pop_exprstate();
|
||||
p_stack->top_exprstate().on_symbol(tk.text(),
|
||||
p_stack, p_emit_expr);
|
||||
#endif
|
||||
|
|
@ -129,7 +129,7 @@ namespace xo {
|
|||
|
||||
auto p_stack = p_psm->p_stack_;
|
||||
|
||||
std::unique_ptr<exprstate> self = p_stack->pop_exprstate();
|
||||
std::unique_ptr<exprstate> self = p_psm->pop_exprstate();
|
||||
|
||||
p_stack->top_exprstate().on_expr(expr, p_psm);
|
||||
} /*on_expr*/
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ namespace xo {
|
|||
auto p_stack = p_psm->p_stack_;
|
||||
|
||||
if (farglxs_type_ == formalarglstatetype::argl_1b) {
|
||||
std::unique_ptr<exprstate> self = p_stack->pop_exprstate();
|
||||
std::unique_ptr<exprstate> self = p_psm->pop_exprstate();
|
||||
|
||||
p_stack->top_exprstate().on_formal_arglist(this->argl_, p_psm);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ namespace xo {
|
|||
if (this->formalxs_type_ == formalstatetype::formal_2) {
|
||||
this->result_.assign_td(td);
|
||||
|
||||
std::unique_ptr<exprstate> self = p_stack->pop_exprstate();
|
||||
std::unique_ptr<exprstate> self = p_psm->pop_exprstate();
|
||||
|
||||
rp<Variable> var = Variable::make(result_.name(),
|
||||
result_.td());
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ namespace xo {
|
|||
/* have to do pop first, before sending symbol to
|
||||
* the o.g. symbol-requester
|
||||
*/
|
||||
std::unique_ptr<exprstate> self = p_stack->pop_exprstate();
|
||||
std::unique_ptr<exprstate> self = p_psm->pop_exprstate();
|
||||
|
||||
|
||||
p_stack->top_exprstate().on_symbol(tk.text(), p_psm);
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ namespace xo {
|
|||
xtag("typename", tk.text())));
|
||||
}
|
||||
|
||||
std::unique_ptr<exprstate> self = p_stack->pop_exprstate();
|
||||
std::unique_ptr<exprstate> self = p_psm->pop_exprstate();
|
||||
p_stack->top_exprstate().on_typedescr(td, p_psm);
|
||||
}
|
||||
} /*namespace scm*/
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ namespace xo {
|
|||
if (lmxs_type_ == lambdastatetype::lm_3) {
|
||||
/* done! */
|
||||
|
||||
std::unique_ptr<exprstate> self = p_stack->pop_exprstate();
|
||||
std::unique_ptr<exprstate> self = p_psm->pop_exprstate();
|
||||
|
||||
std::string name = "fixmename";
|
||||
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ namespace xo {
|
|||
|
||||
auto p_stack = p_psm->p_stack_;
|
||||
|
||||
std::unique_ptr<exprstate> self = p_stack->pop_exprstate();
|
||||
std::unique_ptr<exprstate> self = p_psm->pop_exprstate();
|
||||
|
||||
p_stack->top_exprstate().on_expr(expr, p_psm);
|
||||
}
|
||||
|
|
|
|||
19
src/reader/parserstatemachine.cpp
Normal file
19
src/reader/parserstatemachine.cpp
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
/* file parserstatemachine.cpp
|
||||
*
|
||||
* author: Roland Conybeare
|
||||
*/
|
||||
|
||||
#include "parserstatemachine.hpp"
|
||||
#include "exprstatestack.hpp"
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
std::unique_ptr<exprstate>
|
||||
parserstatemachine::pop_exprstate() {
|
||||
return p_stack_->pop_exprstate();
|
||||
}
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
|
||||
/* end parserstatemachine.cpp */
|
||||
|
|
@ -154,7 +154,7 @@ namespace xo {
|
|||
assert(result.get());
|
||||
|
||||
/* this expression complete.. */
|
||||
std::unique_ptr<exprstate> self = p_stack->pop_exprstate();
|
||||
std::unique_ptr<exprstate> self = p_psm->pop_exprstate();
|
||||
|
||||
/* ..but more operators could follow, so don't commit yet */
|
||||
p_stack->push_exprstate(progress_xs::make(result));
|
||||
|
|
@ -203,7 +203,7 @@ namespace xo {
|
|||
|
||||
rp<Expression> expr = this->assemble_expr();
|
||||
|
||||
std::unique_ptr<exprstate> self = p_stack->pop_exprstate();
|
||||
std::unique_ptr<exprstate> self = p_psm->pop_exprstate();
|
||||
|
||||
p_stack->top_exprstate().on_expr(expr, p_psm);
|
||||
|
||||
|
|
@ -274,7 +274,7 @@ namespace xo {
|
|||
/* right paren confirms stack expression */
|
||||
rp<Expression> expr = this->assemble_expr();
|
||||
|
||||
std::unique_ptr<exprstate> self = p_stack->pop_exprstate();
|
||||
std::unique_ptr<exprstate> self = p_psm->pop_exprstate();
|
||||
|
||||
if (p_stack->empty()) {
|
||||
throw std::runtime_error(tostr(self_name,
|
||||
|
|
@ -344,7 +344,7 @@ namespace xo {
|
|||
auto expr = this->assemble_expr();
|
||||
|
||||
/* 2. remove from stack */
|
||||
std::unique_ptr<exprstate> self = p_stack->pop_exprstate();
|
||||
std::unique_ptr<exprstate> self = p_psm->pop_exprstate();
|
||||
|
||||
/* 3. replace with new progress_xs: */
|
||||
progress_xs::start(expr, op2, p_stack);
|
||||
|
|
@ -365,7 +365,7 @@ namespace xo {
|
|||
* 4. expect_rhs_expression
|
||||
*/
|
||||
|
||||
std::unique_ptr<exprstate> self = p_stack->pop_exprstate();
|
||||
std::unique_ptr<exprstate> self = p_psm->pop_exprstate();
|
||||
|
||||
/* 1. replace with nested incomplete infix exprs */
|
||||
progress_xs::start(lhs_, op_type_, p_stack);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue