X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fcic_transformations%2FcicAst.ml;h=fcc80369794c375c8bbe0b8d825d8cece1f2b701;hb=afd3b379d4959e4a18c1f26f25e4a9c14997866f;hp=92ab328c18a1e9ac16881d5d7815da2664cd9a68;hpb=9e4d691ac9e6edb63703a9e4e49b02c86b38624e;p=helm.git diff --git a/helm/ocaml/cic_transformations/cicAst.ml b/helm/ocaml/cic_transformations/cicAst.ml index 92ab328c1..fcc803697 100644 --- a/helm/ocaml/cic_transformations/cicAst.ml +++ b/helm/ocaml/cic_transformations/cicAst.ml @@ -23,7 +23,28 @@ * http://helm.cs.unibo.it/ *) -type location = int * int +(** {2 Parsing related types} *) + +type location = Lexing.position * Lexing.position + + (* maps old style (i.e. <= 3.07) lexer location to new style location, padding + * with dummy values where needed *) +let floc_of_loc (loc_begin, loc_end) = + let floc_begin = + { Lexing.pos_fname = ""; Lexing.pos_lnum = -1; Lexing.pos_bol = -1; + Lexing.pos_cnum = loc_begin } + in + let floc_end = { floc_begin with Lexing.pos_cnum = loc_end } in + (floc_begin, floc_end) + + (* the other way round *) +let loc_of_floc = function + | { Lexing.pos_cnum = loc_begin }, { Lexing.pos_cnum = loc_end } -> + (loc_begin, loc_end) + +let dummy_floc = floc_of_loc (-1, -1) + +(** {2 Cic Ast} *) type binder_kind = [ `Lambda | `Pi | `Exists | `Forall ] type induction_kind = [ `Inductive | `CoInductive ] @@ -44,7 +65,10 @@ type 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 *) - | Ident of string * subst list (* literal, substitutions *) + | Ident of string * subst list option + (* literal, substitutions. + * Some [] -> user has given an empty explicit substitution list + * None -> user has given no explicit substitution list *) | Implicit | Meta of int * meta_subst list | Num of string * int (* literal, instance *)