X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fcic_notation%2FgrafiteAst.ml;h=cba5acd1f8322dd0d3d30dc64f10f9bad3118d3e;hb=4167cea65ca58897d1a3dbb81ff95de5074700cc;hp=350b32a37f196457d6f6c5d05a2f37de79159a64;hpb=a82fc7fac28ab55650be57a127c3e3230981f72d;p=helm.git diff --git a/helm/ocaml/cic_notation/grafiteAst.ml b/helm/ocaml/cic_notation/grafiteAst.ml index 350b32a37..cba5acd1f 100644 --- a/helm/ocaml/cic_notation/grafiteAst.ml +++ b/helm/ocaml/cic_notation/grafiteAst.ml @@ -47,8 +47,8 @@ type ('term, 'lazy_term, 'reduction, 'ident) tactic = | Absurd of loc * 'term | Apply of loc * 'term | Assumption of loc - | Auto of loc * int option * int option * string option - (* depth, width, paramodulation *) + | Auto of loc * int option * int option * string option * string option + (* depth, width, paramodulation, full *) (* ALB *) | Change of loc * ('term, 'lazy_term, 'ident) pattern * 'lazy_term | Clear of loc * 'ident | ClearBody of loc * 'ident @@ -124,8 +124,7 @@ type obj = | Inductive of (string * Ast.term) list * Ast.term inductive_type list (** parameters, list of loc * mutual inductive types *) - | Theorem of thm_flavour * string * Ast.term * - Ast.term option + | Theorem of thm_flavour * string * Ast.term * Ast.term option (** flavour, name, type, body * - name is absent when an unnamed theorem is being proved, tipically in * interactive usage @@ -136,9 +135,17 @@ type obj = (string * Ast.term) list (** left parameters, name, type, fields *) +type metadata = + | Dependency of string (* baseuri without trailing slash *) + | Baseuri of string + +let compare_metadata = Pervasives.compare + +let eq_metadata = (=) + (** To be increased each time the command type below changes, used for "safe" * marshalling *) -let magic = 1 +let magic = 2 type ('term,'obj) command = | Default of loc * string * UriManager.uri list @@ -161,6 +168,8 @@ type ('term,'obj) command = Ast.cic_appl_pattern (* description (i.e. id), symbol, arg pattern, appl pattern *) + | Metadata of loc * metadata + (* DEBUGGING *) | Dump of loc (* dump grammar on stdout *) (* DEBUGGING *) @@ -170,14 +179,23 @@ type ('term,'obj) command = let magic = magic + 10000 * CicNotationPt.magic let reash_cmd_uris = + let reash_uri uri = UriManager.uri_of_string (UriManager.string_of_uri uri) in function | Default (loc, name, uris) -> - let uris = - List.map - (fun uri -> UriManager.uri_of_string (UriManager.string_of_uri uri)) - uris - in + let uris = List.map reash_uri uris in Default (loc, name, uris) + | Interpretation (loc, dsc, args, cic_appl_pattern) -> + let rec aux = + function + | CicNotationPt.UriPattern uri -> + CicNotationPt.UriPattern (reash_uri uri) + | CicNotationPt.ApplPattern args -> + CicNotationPt.ApplPattern (List.map aux args) + | CicNotationPt.VarPattern _ + | CicNotationPt.ImplicitPattern as pat -> pat + in + let appl_pattern = aux cic_appl_pattern in + Interpretation (loc, dsc, args, appl_pattern) | cmd -> cmd type ('term, 'lazy_term, 'reduction, 'ident) tactical = @@ -189,16 +207,31 @@ type ('term, 'lazy_term, 'reduction, 'ident) tactical = | Then of loc * ('term, 'lazy_term, 'reduction, 'ident) tactical * ('term, 'lazy_term, 'reduction, 'ident) tactical list | First of loc * ('term, 'lazy_term, 'reduction, 'ident) tactical list - (* try a sequence of loc * tacticals until one succeeds, fail otherwise *) + (* try a sequence of loc * tactical until one succeeds, fail otherwise *) | Try of loc * ('term, 'lazy_term, 'reduction, 'ident) tactical (* try a tactical and mask failures *) | Solve of loc * ('term, 'lazy_term, 'reduction, 'ident) tactical list + | Dot of loc + | Semicolon of loc + | Branch of loc + | Shift of loc + | Pos of loc * int + | Merge of loc + | Focus of loc * int list + | Unfocus of loc + | Skip of loc + +let is_punctuation = + function + | Dot _ | Semicolon _ | Branch _ | Shift _ | Merge _ | Pos _ -> true + | _ -> false type ('term, 'lazy_term, 'reduction, 'obj, 'ident) code = | Command of loc * ('term,'obj) command | Macro of loc * 'term macro | Tactical of loc * ('term, 'lazy_term, 'reduction, 'ident) tactical + * ('term, 'lazy_term, 'reduction, 'ident) tactical option(* punctuation *) type ('term, 'lazy_term, 'reduction, 'obj, 'ident) comment = | Note of loc * string