typedef boost::shared_ptr Expression;
class BinaryOperator {
Expression left;
Expression right;
public:
BinaryOperator(Expression lval, Expression rval);
template virtual T GetValue(T (Base::*fun)(void) const) const = 0;
};
class Add : public BinaryOperator {};
class Subtract : public BinaryOperator {};
Creation:
| expr '+' expr
{
$$ = e(new tValue::Add(*$1, *$3));
delete $1, $3;
}
Use:
int currentSize = currentSizeValue.getValue();