X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=helm%2Focaml%2Fcic_disambiguation%2Ftest_parser.ml;h=4f918b0a0d2f7641f55a4d0b43f2a5f73f7433c0;hb=12cc5b2b8e7f7bb0b5e315094b008a293a4df6b1;hp=dde96955506853815b0f4bebe7f0a29a8f428233;hpb=ae25bae855f66b7ebc9926a80dc38e622f0cff38;p=helm.git diff --git a/helm/ocaml/cic_disambiguation/test_parser.ml b/helm/ocaml/cic_disambiguation/test_parser.ml index dde969555..4f918b0a0 100644 --- a/helm/ocaml/cic_disambiguation/test_parser.ml +++ b/helm/ocaml/cic_disambiguation/test_parser.ml @@ -23,67 +23,73 @@ * http://helm.cs.unibo.it/ *) -let default_mode = `Term - -let mode = ref default_mode - -(* let pp_tactical = TacticAstPp.pp_tactical *) +open Printf +(* let pp_tactical = TacticAst2Box.tacticalPp -let pp_command = CommandAst.pp_command -let pp_script = CommandAst.pp_script +*) -let _ = +let modes = ("term",`Term) :: ("statement",`Statement) :: [] + +let mode = try - match Sys.argv.(1) with - | "alias" -> mode := `Alias - | "term" -> mode := `Term - | "tactic" -> mode := `Tactic - | "tactical" -> mode := `Tactical - | "command" -> mode := `Command - | "script" -> mode := `Script - | _ -> - prerr_endline "What???????"; - exit 1 - with Invalid_argument _ -> () + List.assoc (Sys.argv.(1)) modes + with + | _ -> + prerr_endline + (sprintf "What? Supported modes are: %s\n" + (String.concat " " (List.map fst modes))); + exit 1 let _ = - let ic = stdin in - try - if !mode = `Script then begin - let script = CicTextualParser2.parse_script (Stream.of_channel ic) in - print_endline (pp_script script) - end else +(* + if mode = `Script then + let ic = open_in Sys.argv.(2) in + let istream = Stream.of_channel ic in + let (loc, script) = CicTextualParser2.parse_script istream in + List.iter + (function + | DisambiguateTypes.Command cmd -> print_endline (pp_tactical cmd) + | DisambiguateTypes.Comment (loc, s) -> print_endline s) + script + else +*) + let ic = stdin in + try while true do + let line = input_line ic in + let istream = Stream.of_string line in try - let line = input_line ic in - let istream = Stream.of_string line in - (match !mode with + (match mode with | `Term -> let term = CicTextualParser2.parse_term istream in print_endline (BoxPp.pp_term term) - | `Tactic -> - let tac = CicTextualParser2.parse_tactic istream in - print_endline (TacticAstPp.pp_tactic tac) + | `Statement -> + (match CicTextualParser2.parse_statement istream with + | TacticAst.Executable (_, exe) + | TacticAst.Comment (_,TacticAst.Code (_, exe)) -> + print_endline (TacticAstPp.pp_executable exe) + | TacticAst.Comment (_,TacticAst.Note (_, note)) -> + print_endline note) +(* | `Tactical -> let tac = CicTextualParser2.parse_tactical istream in print_endline (pp_tactical tac) - | `Command -> - let cmd = CicTextualParser2.parse_command istream in - print_endline (pp_command cmd) - | `Script -> assert false (* catched above *) +*) | `Alias -> let env = CicTextualParser2.EnvironmentP3.of_string line in - print_endline (CicTextualParser2.EnvironmentP3.to_string env)); + print_endline (CicTextualParser2.EnvironmentP3.to_string env) + | _ -> assert false); flush stdout with - | CicTextualParser2.Parse_error msg -> prerr_endline msg - (* - | Stdpp.Exc_located ((p_start, p_end), exn) -> - prerr_endline (Printf.sprintf "Exception at character %d-%d: %s" - p_start p_end (Printexc.to_string exn)) - *) + | CicTextualParser2.Parse_error (floc, msg) -> + let (x, y) = CicAst.loc_of_floc floc in + let before = String.sub line 0 x in + let error = String.sub line x (y - x) in + let after = String.sub line y (String.length line - y) in + eprintf "%s%s%s\n" before error after; + prerr_endline (sprintf "at character %d-%d: %s" x y msg) done - with End_of_file -> - close_in ic + with End_of_file -> + close_in ic