]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_notation/cicNotationPt.ml
version 0.7.1
[helm.git] / helm / ocaml / cic_notation / cicNotationPt.ml
index 3d6242e962bb705e72ac7f24d557427827c0f1f9..c702f5115703f46e8f31f35afec1ff6c0416e85b 100644 (file)
@@ -31,10 +31,15 @@ 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 *)
+  | `Level of int * Gramext.g_assoc   (* precedence, associativity *)
   ]
 
 type literal =
@@ -76,12 +81,15 @@ type term =
   | 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
@@ -95,8 +103,8 @@ and layout_pattern =
       |+ column separator, row separator +| *)
   | Sqrt of term
   | Root of term * term (* argument, index *)
-  | Break
-  | Box of box_kind * term list
+(*   | Break *)
+  | Box of box_spec * term list
 
 and magic_term =
   (* level 1 magics *)
@@ -122,27 +130,17 @@ and pattern_variable =
   | FreshVar of string
 
 type argument_pattern =
-  | IdentArg of string
-  | EtaArg of string option * argument_pattern  (* eta abstraction *)
+  | IdentArg of int * string (* eta-depth, name *)
 
 type cic_appl_pattern =
   | UriPattern of string
-  | ArgPattern of argument_pattern
+  | VarPattern of string
   | ApplPattern of cic_appl_pattern list
 
-type value =
-  | TermValue of term
-  | StringValue of string
-  | NumValue of string
-  | OptValue of value option
-  | ListValue of value list
-
-type value_type =
-  | TermType
-  | StringType
-  | NumType
-  | OptType of value_type
-  | ListType of value_type
-
-type declaration = string * value_type
+type phrase = (* TODO hackish: replace with TacticAst.statement or similar *)
+  | Print of term
+  | Notation of term * Gramext.g_assoc option * int option * term
+      (* level 1 pattern, associativity, precedence, level 2 pattern *)
+  | Interpretation of (string * argument_pattern list) * cic_appl_pattern
+  | Render of UriManager.uri