/** @file progress_xs.hpp * * Author: Roland Conybeare **/ #pragma once #include "exprstate.hpp" //#include namespace xo { namespace scm { /** @class progress_xs * @brief state machine for parsing a schematica runtime-value-expression **/ class progress_xs : public exprstate { public: progress_xs(rp valex); virtual ~progress_xs() = default; static const progress_xs * from(const exprstate * x) { return dynamic_cast(x); } static std::unique_ptr make(rp valex); virtual bool admits_definition() const override; virtual bool admits_symbol() const override; virtual bool admits_colon() const override; virtual bool admits_semicolon() const override; virtual bool admits_singleassign() const override; virtual bool admits_leftparen() const override; virtual bool admits_rightparen() const override; virtual bool admits_f64() const override; // virtual void on_f64(..) override virtual void on_def(exprstatestack * p_stack) override; virtual void on_expr(ref::brw expr, exprstatestack * p_stack, rp * p_emit_expr) override; virtual void on_symbol(const token_type & tk, exprstatestack * p_stack, rp * p_emit_expr) override; virtual void on_typedescr(TypeDescr td, exprstatestack * /*p_stack*/, rp * /*p_emit_expr*/) override; virtual void on_colon(exprstatestack * p_stack) override; virtual void on_semicolon(exprstatestack * p_stack, rp * /*p_emit_expr*/) override; virtual void on_singleassign(exprstatestack * p_stack) override; virtual void on_leftparen(exprstatestack * p_stack, rp * /*p_emit_expr*/) override; virtual void on_rightparen(exprstatestack * p_stack, rp * /*p_emit_expr*/) override; virtual void on_f64(const token_type & tk, exprstatestack * p_stack, rp * /*p_emit_expr*/) override; virtual void print(std::ostream & os) const override; private: #ifdef NOT_YET /** populate an expression here **/ rp gen_expr_; #endif }; } /*namespace scm*/ } /*namespace xo*/ /** end progress_xs.hpp **/