X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fcic_notation%2FcicNotationPt.ml;h=ca00d35396771622d890785a69dd9425d71893c6;hb=33a02e0b639217093eb63f30169aaa6ac8c78907;hp=56272ebedc5f7ffc90d9dff37bd6463eeb074b5d;hpb=34113d572c334c351ba66f4b05db503eed4d48f2;p=helm.git diff --git a/helm/ocaml/cic_notation/cicNotationPt.ml b/helm/ocaml/cic_notation/cicNotationPt.ml index 56272ebed..ca00d3539 100644 --- a/helm/ocaml/cic_notation/cicNotationPt.ml +++ b/helm/ocaml/cic_notation/cicNotationPt.ml @@ -35,14 +35,20 @@ type location = Lexing.position * Lexing.position let loc_of_floc = function | { Lexing.pos_cnum = loc_begin }, { Lexing.pos_cnum = loc_end } -> (loc_begin, loc_end) +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 term_attribute = [ `Loc of location (* source file location *) | `IdRef of string (* ACic pointer *) - | `Href of UriManager.uri list (* hyperlinks for literals *) + | `Href of href 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 *) + | `Raw of string (* unparsed version *) ] type literal = @@ -51,6 +57,8 @@ type literal = | `Number of string ] +type case_indtype = string * href option + type term = (* CIC AST *) @@ -58,8 +66,10 @@ 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 *) | LetRec of induction_kind * (capture_variable * term * int) list * term (* (name, body, decreasing argument) list, where *) @@ -90,7 +100,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 *) @@ -136,3 +146,24 @@ and pattern_variable = (* level 2 variables *) | FreshVar of string +type argument_pattern = + | IdentArg of int * string (* eta-depth, name *) + +type cic_appl_pattern = + | UriPattern of UriManager.uri + | VarPattern of string + | ImplicitPattern + | ApplPattern of cic_appl_pattern list + +(** {2 Standard precedences} *) + +let let_in_prec = 10 +let binder_prec = 20 +let apply_prec = 70 +let simple_prec = 90 + +let let_in_assoc = Gramext.NonA +let binder_assoc = Gramext.RightA +let apply_assoc = Gramext.LeftA +let simple_assoc = Gramext.NonA +