module Language.C99.Simple.Expr where import Prelude hiding (LT, GT) import Language.C99.Simple.AST -- Unary Operators (.++) :: Expr -> Expr (.++) = UnaryOp Inc (.--) :: Expr -> Expr (.--) = UnaryOp Dec ref :: Expr -> Expr ref = UnaryOp Ref deref :: Expr -> Expr deref = UnaryOp DeRef pos :: Expr -> Expr pos = UnaryOp Plus neg :: Expr -> Expr neg = UnaryOp Min (.~) :: Expr -> Expr (.~) = UnaryOp BoolNot (.!) :: Expr -> Expr (.!) = UnaryOp Not -- Binary Operators (.*) :: Expr -> Expr -> Expr (.*) = BinaryOp Mult (./) :: Expr -> Expr -> Expr (./) = BinaryOp Div (.%) :: Expr -> Expr -> Expr (.%) = BinaryOp Mod (.+) :: Expr -> Expr -> Expr (.+) = BinaryOp Add (.-) :: Expr -> Expr -> Expr (.-) = BinaryOp Sub (.<<) :: Expr -> Expr -> Expr (.<<) = BinaryOp ShiftL (.>>) :: Expr -> Expr -> Expr (.>>) = BinaryOp ShiftR (.<) :: Expr -> Expr -> Expr (.<) = BinaryOp LT (.>) :: Expr -> Expr -> Expr (.>) = BinaryOp GT (.<=) :: Expr -> Expr -> Expr (.<=) = BinaryOp LE (.>=) :: Expr -> Expr -> Expr (.>=) = BinaryOp GE (.==) :: Expr -> Expr -> Expr (.==) = BinaryOp Eq (.!=) :: Expr -> Expr -> Expr (.!=) = BinaryOp NEq (.&) :: Expr -> Expr -> Expr (.&) = BinaryOp And (.^) :: Expr -> Expr -> Expr (.^) = BinaryOp XOr (.|) :: Expr -> Expr -> Expr (.|) = BinaryOp Or (.&&) :: Expr -> Expr -> Expr (.&&) = BinaryOp LAnd (.||) :: Expr -> Expr -> Expr (.||) = BinaryOp LOr -- Assignment operators (.=) :: Expr -> Expr -> Expr (.=) = AssignOp Assign (.*=) :: Expr -> Expr -> Expr (.*=) = AssignOp AssignMult (./=) :: Expr -> Expr -> Expr (./=) = AssignOp AssignDiv (.%=) :: Expr -> Expr -> Expr (.%=) = AssignOp AssignMod (.+=) :: Expr -> Expr -> Expr (.+=) = AssignOp AssignAdd (.-=) :: Expr -> Expr -> Expr (.-=) = AssignOp AssignSub (.<<=) :: Expr -> Expr -> Expr (.<<=) = AssignOp AssignShiftL (.>>=) :: Expr -> Expr -> Expr (.>>=) = AssignOp AssignShiftR (.&=) :: Expr -> Expr -> Expr (.&=) = AssignOp AssignAnd (.^=) :: Expr -> Expr -> Expr (.^=) = AssignOp AssignXOr (.|=) :: Expr -> Expr -> Expr (.|=) = AssignOp AssignOr