diff --git a/include/compiler/treeifier/ast/helper.hh b/include/compiler/treeifier/ast/helper.hh index 3fe8348..bf9e53a 100644 --- a/include/compiler/treeifier/ast/helper.hh +++ b/include/compiler/treeifier/ast/helper.hh @@ -51,20 +51,24 @@ namespace ppc::comp::tree::ast { else return ctx.tokens[res_i].location.intersect(loc()); } - bool try_parse(const parser_t &parser, data::map_t &out, messages::msg_stack_t &messages) { + bool parse(const parser_t &parser, data::map_t &out) { + return parser(ctx, i, out); + } + bool try_parse(const parser_t &parser, data::map_t &out, bool silent = true) { try { return parser(ctx, i, out); } catch (messages::message_t msg) { - messages.push(msg); + if (!silent) ctx.messages.push(msg); return false; } } - bool try_parse(const parser_t &parser, data::map_t &out) { + bool try_parse(const parser_t &parser, data::map_t &out, message_t &err) { try { return parser(ctx, i, out); } catch (messages::message_t msg) { + err = msg; return false; } }