]> matita.cs.unibo.it Git - fireball-separation.git/blobdiff - ocaml/test.ml
Better error messages in parser
[fireball-separation.git] / ocaml / test.ml
index 2f6017a58660319ac75e6a668c1a10ae9b939af4..3b6d904fd1f231db2f585f3fbdaedd3810d216e2 100644 (file)
@@ -1,12 +1,5 @@
-let three = Array.length Sys.argv = 1;;
-
-let discriminator =
- if three
- then (module Lambda3 : Discriminator.Discriminator)
- else (module Lambda4);;
-
-module Pippo = (val discriminator);;
-open Pippo;;
+open Lambda4;;
+open Util;;
 
 let acaso l =
     let n = Random.int (List.length l) in
@@ -19,24 +12,14 @@ let acaso2 l1 l2 =
   if n >= n1 then List.nth l2 (n - n1) else List.nth l1 n
 ;;
 
-let rec take l n =
+(* let rec take l n =
   if n = 0 then []
   else match l with
   | [] -> []
   | x::xs -> x :: (take xs (n-1))
-;;
-
-let test3 n vars =
-  let rec aux n inerts lams =
-    if n = 0 then take (Util.sort_uniq inerts) 5
-    else let inerts, lams = if Random.int 2 = 0
-      then inerts, ("(" ^ acaso vars ^ ". " ^ acaso2 inerts lams ^ ")") :: lams
-      else ("(" ^ acaso inerts ^ " " ^ acaso2 inerts lams^ ")") :: inerts, lams
-    in aux (n-1) inerts lams
-  in aux (2*n) vars []
-;;
+;; *)
 
-let test4 n vars =
+let gen n vars =
   let rec take' l n =
     if n = 0 then [], []
     else match l with
@@ -54,23 +37,20 @@ let test4 n vars =
 
 
 let rec repeat f n =
-  prerr_endline "\n*************************** NEW TEST ***************************";
+  prerr_endline "\n########################### NEW TEST ###########################";
   f () ;
   if n > 0 then repeat f (n-1)
 ;;
 
-let call_main3 tms =
-  let _ = (
-  List.iter prerr_endline tms; prerr_newline ();
-  ) in Lambda3.main [Lambda3.magic tms ["*"]]
-;;
-let call_main4 div convs nums =
-  let _ = (
-  (match div with Some div -> prerr_endline ("DIV: " ^ div) | None -> ());
-  print_endline "CONV:"; List.iter prerr_endline convs;
-  print_endline "NUMS:"; List.iter prerr_endline nums;
-  prerr_newline ();
-  ) in Lambda4.main [Lambda4.magic_conv div convs nums ["*"]]
+let solve div convs nums =
+ let p = String.concat "\n" (
+  "$! randomly generated test" ::
+  ("D " ^ div) ::
+  List.map ((^) "C ") convs @
+  List.map (fun s -> "N " ^ s ^ " Z") nums
+ ) in
+ prerr_endline p;
+ (Lambda4.solve ++ Lambda4.problem_of ++ Parser.problem_of_string) p
 ;;
 
 let main =
@@ -79,15 +59,9 @@ let main =
   let complex = 200 in
   let vars = ["x"; "y"; "z"; "v" ; "w"; "a"; "b"; "c"] in
 
-  (* let open Parser in *)
-
-  if three then repeat (fun _ ->
-    let tms = test3 complex vars in
-    call_main3 tms
-  ) num
-  else repeat (fun _ ->
-    let div, (conv, nums) = test4 complex vars in
-    call_main4 (Some div) conv nums
+  repeat (fun _ ->
+    let div, (conv, nums) = gen complex vars in
+    solve div conv nums
   ) num
   ;