package nl.uva.bromance.QL.expressions.binary.logicalexpressions; import nl.uva.bromance.QL.exceptions.TypeCheckingError; import nl.uva.bromance.QL.expressions.Expression; import nl.uva.bromance.QL.expressions.primitives.BooleanPrimitive; import nl.uva.bromance.QL.expressions.unary.Primitive; import nl.uva.bromance.QL.typechecking.SymbolTable; import nl.uva.bromance.QL.exceptions.OperationException; import java.util.List; public class NotEqualTo extends LogicalExpression { public NotEqualTo(Expression lhs, Expression rhs, int lineNumber) { super(lhs, rhs, lineNumber); } @Override public BooleanPrimitive evaluate(SymbolTable s) { Primitive lhs = this.lhs.evaluate(s); Primitive rhs = this.rhs.evaluate(s); return lhs.isNotEqual(rhs, getLineNumber()); } @Override public BooleanPrimitive typeCheck(SymbolTable s, List<TypeCheckingError> exceptions) { Primitive lType = lhs.typeCheck(s, exceptions); Primitive rType = rhs.typeCheck(s,exceptions); if(lType.getClass() != rType.getClass()) exceptions.add(new OperationException("'!=' operation on operators of differing types @ line"+getLineNumber())); return BooleanPrimitive.defaultValue(getLineNumber()); } }