]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_notation/test_lexer.ml
* added todo file
[helm.git] / helm / ocaml / cic_notation / test_lexer.ml
index 7672d3070d3d400ed702d26cf29e105e490e36ba..386c0f1b98b19b21433e8169f9eacd67f0f7cfa4 100644 (file)
  * http://helm.cs.unibo.it/
  *)
 
-let ic =
+let _ =
+  let level = ref ~-1 in
+  let ic = ref stdin in
+  let arg_spec = [] in
+  let usage = "test_lexer [ file ]" in
+  let open_file fname =
+    if !ic <> stdin then close_in !ic;
+    ic := open_in fname
+  in
+  Arg.parse arg_spec open_file usage;
+  let lexer = CicNotationLexer.notation_lexer in
+  let token_stream = fst (lexer.Token.tok_func (Stream.of_channel !ic)) in
+  Printf.printf "Lexing notation level %d\n" !level; flush stdout;
+  let rec dump () =
+    let (a,b) = Stream.next token_stream in
+    if a = "EOI" then raise Stream.Failure;
+    print_endline (Printf.sprintf "%s '%s'" a b);
+    dump ()
+  in
   try
-    open_in Sys.argv.(1)
-  with Invalid_argument _ -> stdin
-in
-let token_stream =
-  fst (CicNotationLexer.level1_lexer.Token.tok_func (Stream.of_channel ic))
-in
-let rec dump () =
-  let (a,b) = Stream.next token_stream in
-  if a = "EOI" then raise Stream.Failure;
-  print_endline (Printf.sprintf "%s '%s'" a b);
-  dump ()
-in
-try
-  dump ()
-with Stream.Failure -> ()
+    dump ()
+  with Stream.Failure -> ()
+