X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fcic_disambiguation%2Ftest_parser.ml;h=dde96955506853815b0f4bebe7f0a29a8f428233;hb=c6d966bbc276fb0d3bb36ef2945c7bfa31a5ff1b;hp=41634cbb351f098aba07b45b35945796339bb546;hpb=0148419c577eab74538b8e2564a64e399d8bdd65;p=helm.git diff --git a/helm/ocaml/cic_disambiguation/test_parser.ml b/helm/ocaml/cic_disambiguation/test_parser.ml index 41634cbb3..dde969555 100644 --- a/helm/ocaml/cic_disambiguation/test_parser.ml +++ b/helm/ocaml/cic_disambiguation/test_parser.ml @@ -1,13 +1,89 @@ -try - let ic = open_in Sys.argv.(1) in - let term = Parser.parse_term (Stream.of_channel ic) in - close_in ic; - print_endline (Pp.pp_term term) -with 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)) - -(* print_endline (Macro.expand "def") *) - -(* Printf.printf "'%s'\n" (Macro.expand Sys.argv.(1)) *) +(* Copyright (C) 2004, HELM Team. + * + * This file is part of HELM, an Hypertextual, Electronic + * Library of Mathematics, developed at the Computer Science + * Department, University of Bologna, Italy. + * + * HELM is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * HELM is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with HELM; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, + * MA 02111-1307, USA. + * + * For details, see the HELM World-Wide-Web page, + * http://helm.cs.unibo.it/ + *) + +let default_mode = `Term + +let mode = ref default_mode + +(* let pp_tactical = TacticAstPp.pp_tactical *) + +let pp_tactical = TacticAst2Box.tacticalPp +let pp_command = CommandAst.pp_command +let pp_script = CommandAst.pp_script + +let _ = + 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 _ -> () + +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 + while true do + try + let line = input_line ic in + let istream = Stream.of_string line in + (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) + | `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)); + 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)) + *) + done + with End_of_file -> + close_in ic