binary_op_table :: [(BinaryOp, (String, Int))]
binary_op_table
  = [ (LOr, ("||", 2))
    , (LAnd, ("&&", 3))
    , (Or, ("|", 4)), (Nor, ("~|", 4))
    , (And, ("&", 5)), (Nand, ("~&", 5)), (Xor, ("^", 5)), (Xnor, ("^~", 5)), (Xnor, ("~^", 5))
    , (Equals, ("==", 6)), (NotEquals, ("!=", 6)), (CEquals, ("===", 6)), (CNotEquals, ("!==", 6))
    , (LessThan, ("<", 7)), (LessEqual, ("<=", 7)), (GreaterThan, (">", 7)), (GreaterEqual, (">=", 7))
    , (ShiftLeft, ("<<", 8)), (ShiftRight, (">>", 8))
    , (Plus, ("+", 9)), (Minus, ("-", 9))
    , (Times, ("*", 10)), (Divide, ("/", 10)), (Modulo, ("%", 10))
    ]
binary_op_table :: [(BinaryOp, (String, Int))]
binary_op_table
  = [ (LOr, ("||", 2))
    , (LAnd, ("&&", 3))
    , (Or, ("|", 4)), (Nor, ("~|", 4))
    , (And, ("&", 5)), (Nand, ("~&", 5)), (Xor, ("^", 5)), (Xnor, ("^~", 5)), (Xnor, ("~^", 5))
    , (Equals, ("==", 6)), (NotEquals, ("!=", 6)), (CEquals, ("===", 6)), (CNotEquals, ("!==", 6))
    , (LessThan, ("<", 7)), (LessEqual, ("<=", 7)), (GreaterThan, (">", 7)), (GreaterEqual, (">=", 7))
    , (ShiftLeft, ("<<", 8)), (ShiftRight, (">>", 8))
    , (Plus, ("+", 9)), (Minus, ("-", 9))
    , (Times, ("*", 10)), (Divide, ("/", 10)), (Modulo, ("%", 10))
    ]
binary_op_table
  = [ (LOr, ("||", 2))
    , (LAnd, ("&&", 3))
    , (Or, ("|", 4)), (Nor, ("~|", 4))
    , (And, ("&", 5)), (Nand, ("~&", 5)), (Xor, ("^", 5)), (Xnor, ("^~", 5)), (Xnor, ("~^", 5))
    , (Equals, ("==", 6)), (NotEquals, ("!=", 6)), (CEquals, ("===", 6)), (CNotEquals, ("!==", 6))
    , (LessThan, ("<", 7)), (LessEqual, ("<=", 7)), (GreaterThan, (">", 7)), (GreaterEqual, (">=", 7))
    , (ShiftLeft, ("<<", 8)), (ShiftRight, (">>", 8))
    , (Plus, ("+", 9)), (Minus, ("-", 9))
    , (Times, ("*", 10)), (Divide, ("/", 10)), (Modulo, ("%", 10))
    ]