1 module Op (opName, opName1, opPrec, opPrec1, toOp, toOp1, opAssoc) where 2 3 opPrec1 :: String -> Int 4 5 opPrec1 "-" = 1 6 opPrec1 _ = 0 7 8 opPrec :: String -> Int 9 10 opPrec "==" = 5 11 opPrec ">=" = 5 12 opPrec "<=" = 5 13 opPrec "/=" = 5 14 opPrec ">" = 5 15 opPrec "<" = 5 16 17 opPrec "+" = 4 18 opPrec "-" = 4 19 opPrec "*" = 3 20 opPrec "/" = 3 21 opPrec "^" = 2 22 opPrec _ = 0 23 24 opName1 :: String -> String 25 opName1 "-" = "neg" 26 opName1 _ = "" 27 28 opName :: String -> String 29 opName "==" = "equ" 30 opName ">=" = "gte" 31 opName "<=" = "lte" 32 opName "/=" = "ne" 33 opName ">" = "gt" 34 opName "<" = "lt" 35 opName "+" = "add" 36 opName "-" = "sub" 37 opName "*" = "mul" 38 opName "/" = "div" 39 opName "^" = "pow" 40 opName _ = "" 41 42 opAssoc :: String -> String 43 opAssoc "==" = "non" 44 opAssoc ">=" = "non" 45 opAssoc "<=" = "non" 46 opAssoc "/=" = "non" 47 opAssoc ">" = "non" 48 opAssoc "<" = "non" 49 opAssoc "+" = "left" 50 opAssoc "-" = "left" 51 opAssoc "*" = "left" 52 opAssoc "/" = "left" 53 opAssoc "^" = "right" 54 opAssoc _ = "non" 55 56 toOp :: String -> String 57 toOp "add" = "+" 58 toOp "sub" = "-" 59 toOp "mul" = "*" 60 toOp "div" = "/" 61 toOp "pow" = "^" 62 toOp "equ" = "==" 63 toOp "lt" = "<" 64 toOp "gt" = ">" 65 toOp "lte" = "<=" 66 toOp "gte" = ">=" 67 toOp "ne" = "/=" 68 toOp _ = "" 69 70 toOp1 :: String -> String 71 toOp1 "neg" = "-" 72 toOp1 _ = ""