1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
(**************************************************************************)
(* *)
(* OCamlFormat *)
(* *)
(* Copyright (c) Facebook, Inc. and its affiliates. *)
(* *)
(* This source code is licensed under the MIT license found in *)
(* the LICENSE file in the root directory of this source tree. *)
(* *)
(**************************************************************************)
(** Associativities of Ast terms. *)
type t = Left | Non | Right
let to_string = function Left -> "Left" | Non -> "Non" | Right -> "Right"
let equal : t -> t -> bool = Poly.( = )
(** Compute associativity from precedence, since associativity is uniform
across precedence levels. *)
let of_prec (x : Prec.t) =
match x with
| Low | Semi | LessMinus -> Non
| ColonEqual -> Right
| As -> Non
| Comma -> Non
| MinusGreater | BarBar | AmperAmper -> Right
| InfixOp0 -> Left
| InfixOp1 -> Right
| ColonColon -> Right
| InfixOp2 | InfixOp3 -> Left
| InfixOp4 -> Right
| UMinus | Apply -> Non
| HashOp -> Left
| Dot -> Left
| High -> Non
| Atomic -> Non
|