X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=helm%2Focaml%2Fcic_disambiguation%2Ftest_parser.ml;h=3b30e59001dd35aba70508c6ecdf4ce2b5adebe3;hb=423f3f23abfe6d5906818c26ab92d3703714057d;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..3b30e5900 100644 --- a/helm/ocaml/cic_disambiguation/test_parser.ml +++ b/helm/ocaml/cic_disambiguation/test_parser.ml @@ -1,13 +1,93 @@ -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/ + *) + +open Printf + +let pp_tactical = TacticAst2Box.tacticalPp + +let modes = ("term",`Term) :: ("statement",`Statement) :: [] + +let mode = + try + 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 _ = +(* + 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 + (match mode with + | `Term -> + let term = CicTextualParser2.parse_term istream in + print_endline (BoxPp.pp_term term) + | `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) +*) + | `Alias -> + let env = CicTextualParser2.EnvironmentP3.of_string line in + print_endline (CicTextualParser2.EnvironmentP3.to_string env) + | _ -> assert false); + flush stdout + with + | 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