X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fcic_notation%2FcicNotationPt.ml;h=ac6a0edbd1a37a9e1684a4089b9fd8849a3e3342;hb=4167cea65ca58897d1a3dbb81ff95de5074700cc;hp=68ad7d83dd834898e10824d2dc4af863edfa3dda;hpb=2817260358878e72fa359c6d2431b4c7c358a841;p=helm.git diff --git a/helm/ocaml/cic_notation/cicNotationPt.ml b/helm/ocaml/cic_notation/cicNotationPt.ml index 68ad7d83d..ac6a0edbd 100644 --- a/helm/ocaml/cic_notation/cicNotationPt.ml +++ b/helm/ocaml/cic_notation/cicNotationPt.ml @@ -27,7 +27,7 @@ type binder_kind = [ `Lambda | `Pi | `Exists | `Forall ] type induction_kind = [ `Inductive | `CoInductive ] -type sort_kind = [ `Prop | `Set | `Type | `CProp ] +type sort_kind = [ `Prop | `Set | `Type of CicUniv.universe | `CProp ] type fold_kind = [ `Left | `Right ] type location = Lexing.position * Lexing.position @@ -39,11 +39,15 @@ let fail floc msg = let (x, y) = loc_of_floc floc in failwith (Printf.sprintf "Error at characters %d - %d: %s" x y msg) +type href = UriManager.uri + +type child_pos = [ `Left | `Right | `Inner ] + type term_attribute = [ `Loc of location (* source file location *) | `IdRef of string (* ACic pointer *) - | `Href of UriManager.uri list (* hyperlinks for literals *) | `Level of int * Gramext.g_assoc (* precedence, associativity *) + | `ChildPos of child_pos (* position of l1 pattern variables *) | `XmlAttrs of (string option * string * string) list (* list of XML attributes: namespace, name, value *) | `Raw of string (* unparsed version *) @@ -55,6 +59,12 @@ type literal = | `Number of string ] +type case_indtype = string * href option + +(** To be increased each time the term type below changes, used for "safe" + * marshalling *) +let magic = 1 + type term = (* CIC AST *) @@ -62,7 +72,8 @@ type term = | Appl of term list | Binder of binder_kind * capture_variable * term (* kind, name, body *) - | Case of term * string option * term option * (case_pattern * term) list + | Case of term * case_indtype option * term option * + (case_pattern * term) list (* what to match, inductive type, out type, list *) | Cast of term * term | LetIn of capture_variable * term * term (* name, body, where *) @@ -95,7 +106,7 @@ and capture_variable = term * term option and meta_subst = term option and subst = string * term -and case_pattern = string * capture_variable list +and case_pattern = string * href option * capture_variable list and box_kind = H | V | HV | HOV and box_spec = box_kind * bool * bool (* kind, spacing, indent *)