xo-reader: feat: support operator precedence for *,/ over +,-

This commit is contained in:
Roland Conybeare 2024-08-15 00:36:02 -04:00
commit c36e8cae40
2 changed files with 113 additions and 25 deletions

View file

@ -26,6 +26,9 @@ namespace xo {
extern const char *
optype_descr(optype x);
extern int
precedence(optype x);
inline std::ostream &
operator<< (std::ostream & os, optype x) {
os << optype_descr(x);
@ -37,12 +40,13 @@ namespace xo {
**/
class progress_xs : public exprstate {
public:
progress_xs(rp<Expression> valex);
progress_xs(rp<Expression> valex, optype op);
virtual ~progress_xs() = default;
static const progress_xs * from(const exprstate * x) { return dynamic_cast<const progress_xs *>(x); }
static std::unique_ptr<progress_xs> make(rp<Expression> valex);
static std::unique_ptr<progress_xs> make(rp<Expression> valex,
optype optype = optype::invalid);
bool admits_f64() const;