xo-reader2: handle parsed typedescr + use in DDefineSsm
This commit is contained in:
parent
7b62bd7f5c
commit
7d33440ecb
26 changed files with 231 additions and 37 deletions
|
|
@ -113,6 +113,16 @@ namespace xo {
|
|||
this->stack_->top().on_parsed_symbol(sym, this);
|
||||
}
|
||||
|
||||
void
|
||||
ParserStateMachine::on_parsed_typedescr(TypeDescr td)
|
||||
{
|
||||
scope log(XO_DEBUG(debug_flag_), xtag("td", td));
|
||||
|
||||
assert(stack_);
|
||||
|
||||
this->stack_->top().on_parsed_typedescr(td, this);
|
||||
}
|
||||
|
||||
void
|
||||
ParserStateMachine::on_token(const Token & tk)
|
||||
{
|
||||
|
|
@ -271,6 +281,29 @@ namespace xo {
|
|||
|
||||
this->capture_error(ssm_name, errmsg);
|
||||
}
|
||||
|
||||
void
|
||||
ParserStateMachine::illegal_input_on_typedescr(std::string_view ssm_name,
|
||||
TypeDescr td,
|
||||
std::string_view expect_str)
|
||||
{
|
||||
// TODO:
|
||||
// - want to write error message using DArena
|
||||
// - need something like log_streambuf and/or tostr() that's arena-aware
|
||||
|
||||
auto errmsg_string = tostr("Unexpected type-description for parsing state",
|
||||
xtag("td", td),
|
||||
xtag("expecting", expect_str),
|
||||
xtag("ssm", ssm_name),
|
||||
xtag("via", "ParserStateMachine::illegal_input_on_typedescr"));
|
||||
|
||||
assert(expr_alloc_);
|
||||
|
||||
auto errmsg = DString::from_view(expr_alloc_,
|
||||
std::string_view(errmsg_string));
|
||||
|
||||
this->capture_error(ssm_name, errmsg);
|
||||
}
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue