aboutsummaryrefslogtreecommitdiff
path: root/parsing/extend.ml
diff options
context:
space:
mode:
authorHugo Herbelin2020-08-19 14:57:55 +0200
committerHugo Herbelin2020-08-25 22:27:31 +0200
commit5d0c54e370ac20e9fbf249c3a7f1851a65e42acf (patch)
treec443dae5ab8b2a207735fed5512f4c818b03a4e5 /parsing/extend.ml
parent324e647cb9372dff2c12088524d8371fa3c1cd85 (diff)
Moving production_level_eq to extend.ml for separation of concerns.
Add a mli file and uniformize indentation on the way.
Diffstat (limited to 'parsing/extend.ml')
-rw-r--r--parsing/extend.ml35
1 files changed, 21 insertions, 14 deletions
diff --git a/parsing/extend.ml b/parsing/extend.ml
index fadfb6c5f4..a6fa6edad5 100644
--- a/parsing/extend.ml
+++ b/parsing/extend.ml
@@ -21,6 +21,13 @@ type production_level =
| NumLevel of int
| DefaultLevel (** Interpreted differently at the border or inside a rule *)
+let production_level_eq lev1 lev2 =
+ match lev1, lev2 with
+ | NextLevel, NextLevel -> true
+ | NumLevel n1, NumLevel n2 -> Int.equal n1 n2
+ | DefaultLevel, DefaultLevel -> true
+ | (NextLevel | NumLevel _| DefaultLevel), _ -> false
+
(** User-level types used to tell how to parse or interpret of the non-terminal *)
type 'a constr_entry_key_gen =
@@ -59,19 +66,19 @@ type constr_prod_entry_key =
(** {5 AST for user-provided entries} *)
type 'a user_symbol =
-| Ulist1 of 'a user_symbol
-| Ulist1sep of 'a user_symbol * string
-| Ulist0 of 'a user_symbol
-| Ulist0sep of 'a user_symbol * string
-| Uopt of 'a user_symbol
-| Uentry of 'a
-| Uentryl of 'a * int
+ | Ulist1 of 'a user_symbol
+ | Ulist1sep of 'a user_symbol * string
+ | Ulist0 of 'a user_symbol
+ | Ulist0sep of 'a user_symbol * string
+ | Uopt of 'a user_symbol
+ | Uentry of 'a
+ | Uentryl of 'a * int
type ('a,'b,'c) ty_user_symbol =
-| TUlist1 : ('a,'b,'c) ty_user_symbol -> ('a list,'b list,'c list) ty_user_symbol
-| TUlist1sep : ('a,'b,'c) ty_user_symbol * string -> ('a list,'b list,'c list) ty_user_symbol
-| TUlist0 : ('a,'b,'c) ty_user_symbol -> ('a list,'b list,'c list) ty_user_symbol
-| TUlist0sep : ('a,'b,'c) ty_user_symbol * string -> ('a list,'b list,'c list) ty_user_symbol
-| TUopt : ('a,'b,'c) ty_user_symbol -> ('a option, 'b option, 'c option) ty_user_symbol
-| TUentry : ('a, 'b, 'c) Genarg.ArgT.tag -> ('a,'b,'c) ty_user_symbol
-| TUentryl : ('a, 'b, 'c) Genarg.ArgT.tag * int -> ('a,'b,'c) ty_user_symbol
+ | TUlist1 : ('a,'b,'c) ty_user_symbol -> ('a list,'b list,'c list) ty_user_symbol
+ | TUlist1sep : ('a,'b,'c) ty_user_symbol * string -> ('a list,'b list,'c list) ty_user_symbol
+ | TUlist0 : ('a,'b,'c) ty_user_symbol -> ('a list,'b list,'c list) ty_user_symbol
+ | TUlist0sep : ('a,'b,'c) ty_user_symbol * string -> ('a list,'b list,'c list) ty_user_symbol
+ | TUopt : ('a,'b,'c) ty_user_symbol -> ('a option, 'b option, 'c option) ty_user_symbol
+ | TUentry : ('a, 'b, 'c) Genarg.ArgT.tag -> ('a,'b,'c) ty_user_symbol
+ | TUentryl : ('a, 'b, 'c) Genarg.ArgT.tag * int -> ('a,'b,'c) ty_user_symbol