From 1c6818c39c41cf53c4af7802af1fe38cfe90ddc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Claude=20March=C3=A9?= <claude.marche@inria.fr> Date: Fri, 27 Aug 2010 16:01:22 +0000 Subject: [PATCH] auto-detection of prover (ongoing work) --- src/ide/gconfig.ml | 71 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/src/ide/gconfig.ml b/src/ide/gconfig.ml index 0674577bb1..ecf8b8d857 100644 --- a/src/ide/gconfig.ml +++ b/src/ide/gconfig.ml @@ -241,7 +241,78 @@ let preferences c = dialog#add_button "Close" `CLOSE ; let ( _ : GWindow.Buttons.about) = dialog#run () in dialog#destroy () + + + + + +(* auto-detection of provers *) + +type prover_kind = ATP | ITP +type prover_autodetection_data = + { kind : prover_kind; + prover_id : string; + mutable prover_name : string; + mutable commands : string list; + mutable version_switch : string; + mutable version_regexp : string; + mutable versions_ok : string list; + mutable versions_old : string list; + } + +let default k id = + { kind = k; + prover_id = id; + prover_name = ""; + commands = []; + version_switch = ""; + version_regexp = ""; + versions_ok = []; + versions_old = []; + } + +let load_prover d (key, value) = + match key with + | "name" -> d.prover_name <- Rc.string value + | "command" -> d.commands <- Rc.string value :: d.commands + | "version_switch" -> d.version_switch <- Rc.string value + | "version_regexp" -> d.version_regexp <- Rc.string value + | "version_ok" -> d.versions_ok <- Rc.string value :: d.versions_ok + | "version_old" -> d.versions_old <- Rc.string value :: d.versions_old + | s -> + eprintf "unknown key [%s] in autodetection data@." s; + exit 1 + +let load acc (key,l) = + match key with + | ["ATP" ; id] -> + let d = default ATP id in + List.iter (load_prover d) l; + d :: acc + | ["ITP" ; id] -> + let d = default ITP id in + List.iter (load_prover d) l; + d :: acc + | s :: _ -> + eprintf "unknown section [%s] in auto detection data@." s; + exit 1 + | [] -> assert false +let read_auto_detection_data () = + try + let rc = Rc.from_file "prover-detection-data.conf" in + List.fold_left load [] rc + with + | Failure "lexing" -> + eprintf "Syntax error in prover-detection-data.conf@."; + exit 2 + | Not_found -> + eprintf "prover-detection-data.conf not found@."; + exit 2 + + + + (* Local Variables: compile-command: "unset LANG; make -C ../.. bin/whyide.opt" -- GitLab