X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FgTopLevel%2FbatchParser.ml;h=0d959ac6540861dbd31bdb9843079ca89a56673f;hb=5325734bc2e4927ed7ec146e35a6f0f2b49f50c1;hp=f7370422f7fccf70b03ebe0bd9508c0b27eb2223;hpb=57f2f0152b79ad7096b72b7e3e83939d63454a88;p=helm.git diff --git a/helm/gTopLevel/batchParser.ml b/helm/gTopLevel/batchParser.ml index f7370422f..0d959ac65 100644 --- a/helm/gTopLevel/batchParser.ml +++ b/helm/gTopLevel/batchParser.ml @@ -28,15 +28,29 @@ let verbose = false exception Failure of string let fail msg = raise (Failure msg) -let constants_only uri = not (String.sub uri (String.length uri - 4) 4 = ".var") -let uri_predicate = ref constants_only +let constants_only ~prefix = + let test_prefix = + if prefix = "" then + (fun _ -> true) + else + (fun uri -> Pcre.pmatch ~rex:(Pcre.regexp ("^" ^ prefix)) uri) + in + fun uri -> + test_prefix uri && (not (String.sub uri (String.length uri - 4) 4 = ".var")) + +let uri_predicate = ref (constants_only ~prefix:"") -let uri_pred_of_conf tryvars varsprefix = +let uri_pred_of_conf tryvars ~prefix ~varsprefix = if not tryvars then - constants_only + constants_only ~prefix else - let rex = Pcre.regexp ("^" ^ varsprefix) in - (fun uri -> Pcre.pmatch ~rex uri) + let test_prefix = Pcre.pmatch ~rex:(Pcre.regexp ("^" ^ prefix)) in + let test_varsprefix = Pcre.pmatch ~rex:(Pcre.regexp ("^" ^ varsprefix)) in + fun uri -> + if String.sub uri (String.length uri - 4) 4 = ".var" then + test_varsprefix uri + else + test_prefix uri module DisambiguateCallbacks = struct @@ -57,7 +71,7 @@ module DisambiguateCallbacks = module Disambiguate' = DisambiguatingParser.Make (DisambiguateCallbacks) -let parse mqi_handle ?(uri_pred = constants_only) = +let parse mqi_handle ?(uri_pred = constants_only ~prefix:"") = uri_predicate := uri_pred; let empty_environment = DisambiguatingParser.EnvironmentP3.of_string