]> matita.cs.unibo.it Git - helm.git/commitdiff
In case of EOI the "go ()" loop must exit!
authorClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Tue, 28 Jun 2005 17:11:17 +0000 (17:11 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Tue, 28 Jun 2005 17:11:17 +0000 (17:11 +0000)
helm/matita/matitacLib.ml

index 1f0aea7154a35eabcc91d07117f00eea26dcecb0..d00156b8a08c7af834379afaff7a75b14f0eda73 100644 (file)
@@ -82,16 +82,20 @@ let pp_ocaml_mode () =
   MatitaLog.message ""
   
 let rec go () = 
+ let str = Stream.of_channel stdin in
   try
-    run_script (Stream.of_channel stdin) MatitaEngine.eval_from_stream_greedy
+    run_script str MatitaEngine.eval_from_stream_greedy
   with 
   | MatitaEngine.Drop -> pp_ocaml_mode ()
   | Sys.Break -> MatitaLog.error "user break!"; go ()
   | MatitaTypes.Command_error _ -> go ()
   | CicTextualParser2.Parse_error (floc,err) ->
-     let (x, y) = CicAst.loc_of_floc floc in
-     MatitaLog.error (sprintf "Parse error at %d-%d: %s" x y err);
-     go ()
+     (* check for EOI *)
+     if Stream.peek str = None then
+      exit 0
+     else
+      let (x, y) = CicAst.loc_of_floc floc in
+      MatitaLog.error (sprintf "Parse error at %d-%d: %s" x y err);
   | exn -> MatitaLog.error (Printexc.to_string exn); go ()
   
 let main ~mode =