Associativity assoc;
static const Operator operators[];
+
+ static const Operator &get_operator(const std::string &, Type);
};
enum
struct Expression: Node
{
+ const Operator *oper;
+
+ Expression();
+
virtual Expression *clone() const = 0;
};
struct UnaryExpression: Expression
{
- std::string oper;
NodePtr<Expression> expression;
- bool prefix;
-
- UnaryExpression();
virtual UnaryExpression *clone() const { return new UnaryExpression(*this); }
virtual void visit(NodeVisitor &);
struct BinaryExpression: Expression
{
NodePtr<Expression> left;
- std::string oper;
NodePtr<Expression> right;
- std::string after;
virtual BinaryExpression *clone() const { return new BinaryExpression(*this); }
virtual void visit(NodeVisitor &);