Made BinaryOp concrete, sine the abstract tree need not differentiate between MulOps and AddOps for the sake of precedence, which will be taken care of by the parser
Implemented the BinaryOp using a BinaryOperation enumerator to keep track of operator types