X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Flambda-delta%2Ftoplevel%2FmetaAut.ml;h=031e74cf2a731b17b7c5dc113c1e0b67b6266d01;hb=973b0b1fd5f44b96a3c367a9756f28b75b9fa30b;hp=5b85e46cbea703dd21fafe6f53b7242c6b5025b5;hpb=98b8901060eafdd18e49f42a1182ad580df4a574;p=helm.git diff --git a/helm/software/lambda-delta/toplevel/metaAut.ml b/helm/software/lambda-delta/toplevel/metaAut.ml index 5b85e46cb..031e74cf2 100644 --- a/helm/software/lambda-delta/toplevel/metaAut.ml +++ b/helm/software/lambda-delta/toplevel/metaAut.ml @@ -33,7 +33,6 @@ type environment = (M.qid, M.pars) H.t type context_node = M.qid option (* context node: None = root *) type status = { - genv: M.environment; (* global environment *) henv: environment; (* optimized global environment *) path: M.id list; (* current section path *) hcnt: environment; (* optimized context *) @@ -48,8 +47,10 @@ type resolver = Local of int let hsize = 11 (* hash tables initial size *) +(* Internal functions *******************************************************) + let initial_status size = { - genv = []; path = []; node = None; nodes = []; line = 1; explicit = true; + path = []; node = None; nodes = []; line = 1; explicit = true; henv = H.create size; hcnt = H.create size } @@ -149,24 +150,24 @@ let rec xlate_term f st lenv = function let xlate_item f st = function | A.Section (Some name) -> - f {st with path = name :: st.path; nodes = st.node :: st.nodes} + f {st with path = name :: st.path; nodes = st.node :: st.nodes} None | A.Section None -> begin match st.path, st.nodes with | _ :: ptl, nhd :: ntl -> - f {st with path = ptl; node = nhd; nodes = ntl} + f {st with path = ptl; node = nhd; nodes = ntl} None | _ -> assert false end | A.Context None -> - f {st with node = None} + f {st with node = None} None | A.Context (Some name) -> - let f name = f {st with node = Some name} in - complete_qid f st name + let f name = f {st with node = Some name} None in + complete_qid f st name | A.Block (name, w) -> let f name = let f pars = let f ww = H.add st.hcnt name ((name, ww) :: pars); - f {st with node = Some name} + f {st with node = Some name} None in xlate_term f st pars w in @@ -179,7 +180,7 @@ let xlate_item f st = function let f ww = let entry = (st.line, pars, name, ww, None) in H.add st.henv name pars; - f {st with genv = entry :: st.genv; line = succ st.line} + f {st with line = succ st.line} (Some entry) in xlate_term f st pars w in @@ -192,7 +193,7 @@ let xlate_item f st = function let f ww vv = let entry = (st.line, pars, name, ww, Some (trans, vv)) in H.add st.henv name pars; - f {st with genv = entry :: st.genv; line = succ st.line} + f {st with line = succ st.line} (Some entry) in let f ww = xlate_term (f ww) st pars v in xlate_term f st pars w @@ -201,6 +202,8 @@ let xlate_item f st = function in get_pars_relaxed f st -let meta_of_aut f book = - let f st = f st.genv in - Cps.list_fold_left f xlate_item (initial_status hsize) book +(* Interface functions ******************************************************) + +let initial_status = initial_status hsize + +let meta_of_aut = xlate_item