]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_notation/cicNotationPt.ml
snapshot, notably:
[helm.git] / helm / ocaml / cic_notation / cicNotationPt.ml
index be082121ad3ac58720ca946232e7534acfd85e8c..56272ebedc5f7ffc90d9dff37bd6463eeb074b5d 100644 (file)
@@ -31,10 +31,18 @@ type sort_kind = [ `Prop | `Set | `Type | `CProp ]
 type fold_kind = [ `Left | `Right ]
 
 type location = Lexing.position * Lexing.position
+(* cut and past from CicAst.loc_of_floc *)
+let loc_of_floc = function
+  | { Lexing.pos_cnum = loc_begin }, { Lexing.pos_cnum = loc_end } ->
+      (loc_begin, loc_end)
 
 type term_attribute =
-  [ `Loc of location  (* source file location *)
-  | `IdRef of string  (* ACic pointer *)
+  [ `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 *)
+  | `XmlAttrs of (string option * string * string) list
+      (* list of XML attributes: namespace, name, value *)
   ]
 
 type literal =
@@ -71,16 +79,21 @@ type term =
 
   (* Syntax pattern extensions *)
 
+  | Literal of literal
   | Layout of layout_pattern
+
   | Magic of magic_term
   | Variable of pattern_variable
 
-and capture_variable = Cic.name * term option (* name, type *)
+  (* name, type. First component must be Ident or Variable (FreshVar _) *)
+and capture_variable = term * term option
+
 and meta_subst = term option
 and subst = string * term
 and case_pattern = string * capture_variable list
 
-and box_kind = H | V
+and box_kind = H | V | HV | HOV
+and box_spec = box_kind * bool * bool (* kind, spacing, indent *)
 
 and layout_pattern =
   | Sub of term * term
@@ -88,24 +101,28 @@ and layout_pattern =
   | Below of term * term
   | Above of term * term
   | Frac of term * term
+  | Over of term * term
   | Atop of term * term
-(*   | Array of term * literal option * literal option
+(*   | array of term * literal option * literal option
       |+ column separator, row separator +| *)
   | Sqrt of term
   | Root of term * term (* argument, index *)
   | Break
-  | Box of box_kind * term list
+  | Box of box_spec * term list
+  | Group of term list
 
 and magic_term =
   (* level 1 magics *)
-  | List0 of term * literal option
-  | List1 of term * literal option
+  | List0 of term * literal option (* pattern, separator *)
+  | List1 of term * literal option (* pattern, separator *)
   | Opt of term
 
   (* level 2 magics *)
   | Fold of fold_kind * term * string list * term
     (* base case pattern, recursive case bound names, recursive case pattern *)
   | Default of term * term  (* "some" case pattern, "none" case pattern *)
+  | Fail
+  | If of term * term * term (* test, pattern if true, pattern if false *)
 
 and pattern_variable =
   (* level 1 and 2 variables *)