diff --git a/parser.ml b/parser.ml index 6dab96b..8124f1f 100644 --- a/parser.ml +++ b/parser.ml @@ -29,9 +29,20 @@ let precedence = [ let precedence_of op = Hashtbl.find precedence op -let op_is_right_to_left = function - | Exp -> true - | _ -> false +type associativity = + | Left_to_right + | Right_to_left + +let oper_assoc = [ + Exp, Right_to_left; +] |> List.to_seq |> Hashtbl.of_seq + +let op_is_right_to_left op = + let a = + Hashtbl.find_opt oper_assoc op + |> Option.value ~default: Left_to_right + in + a = Right_to_left let operators = [ Token.Plus, Add;