From 7fd3917572769d206906bc1e4bf39e6195aa1f2e Mon Sep 17 00:00:00 2001 From: Hyeonung Baek Date: Wed, 19 Jan 2022 15:28:41 +0900 Subject: [PATCH] Add associativity table --- parser.ml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) 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;