]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/gTopLevel/batchParser.ml
- added options "-vars" and "-varsprefix"
[helm.git] / helm / gTopLevel / batchParser.ml
index 05fd7a614e0098b97daae67ace0da6b83dfe152a..bd7165becc4e7982a6b86ae78ac69d16e006b8ad 100644 (file)
@@ -28,6 +28,16 @@ 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 uri_pred_of_conf tryvars varsprefix =
+  if not tryvars then
+    constants_only
+  else
+    let rex = Pcre.regexp ("^" ^ varsprefix) in
+    (fun uri -> Pcre.pmatch ~rex uri)
+
 module DisambiguateCallbacks =
  struct
   let output_html ?(append_NL = true) msg =
@@ -36,9 +46,8 @@ module DisambiguateCallbacks =
         (Ui_logger.string_of_html_msg msg)
 
   let interactive_user_uri_choice
-   ~selection_mode ?ok ?enable_button_for_non_vars ~title ~msg ~id =
-     List.filter
-      (fun uri -> not (String.sub uri (String.length uri - 4) 4 = ".var"))
+   ~selection_mode ?ok ?enable_button_for_non_vars ~title ~msg ~id choices =
+     List.filter !uri_predicate choices
 
   let interactive_interpretation_choice _ = fail "Multiple interpretations"
   let input_or_locate_uri ~title = fail "Unknown identifier"
@@ -50,7 +59,8 @@ let mqi_debug_fun = ignore
 let mqi_flags = []
 let mqi_handle = MQIConn.init mqi_flags mqi_debug_fun
 
-let parse =
+let parse ?(uri_pred = constants_only) =
+  uri_predicate := uri_pred;
   let empty_environment =
     DisambiguatingParser.EnvironmentP3.of_string
       DisambiguatingParser.EnvironmentP3.empty
@@ -64,5 +74,5 @@ let parse =
     in
     (metasenv, term)
 
-let parse_pp input = CicPp.ppterm (snd (parse input))
+let parse_pp ?uri_pred input = CicPp.ppterm (snd (parse ?uri_pred input))