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 _     = ""