module Op (opName, opName1, opPrec, opPrec1, toOp, toOp1, opAssoc) where
opPrec1 :: String -> Int
opPrec1 "-" = 1
opPrec1 _ = 0
opPrec :: String -> Int
opPrec "==" = 5
opPrec ">=" = 5
opPrec "<=" = 5
opPrec "/=" = 5
opPrec ">" = 5
opPrec "<" = 5
opPrec "+" = 4
opPrec "-" = 4
opPrec "*" = 3
opPrec "/" = 3
opPrec "^" = 2
opPrec _ = 0
opName1 :: String -> String
opName1 "-" = "neg"
opName1 _ = ""
opName :: String -> String
opName "==" = "equ"
opName ">=" = "gte"
opName "<=" = "lte"
opName "/=" = "ne"
opName ">" = "gt"
opName "<" = "lt"
opName "+" = "add"
opName "-" = "sub"
opName "*" = "mul"
opName "/" = "div"
opName "^" = "pow"
opName _ = ""
opAssoc :: String -> String
opAssoc "==" = "non"
opAssoc ">=" = "non"
opAssoc "<=" = "non"
opAssoc "/=" = "non"
opAssoc ">" = "non"
opAssoc "<" = "non"
opAssoc "+" = "left"
opAssoc "-" = "left"
opAssoc "*" = "left"
opAssoc "/" = "left"
opAssoc "^" = "right"
opAssoc _ = "non"
toOp :: String -> String
toOp "add" = "+"
toOp "sub" = "-"
toOp "mul" = "*"
toOp "div" = "/"
toOp "pow" = "^"
toOp "equ" = "=="
toOp "lt" = "<"
toOp "gt" = ">"
toOp "lte" = "<="
toOp "gte" = ">="
toOp "ne" = "/="
toOp _ = ""
toOp1 :: String -> String
toOp1 "neg" = "-"
toOp1 _ = ""
|