summaryrefslogtreecommitdiff
path: root/lex/main.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lex/main.ml')
-rw-r--r--lex/main.ml102
1 files changed, 0 insertions, 102 deletions
diff --git a/lex/main.ml b/lex/main.ml
deleted file mode 100644
index d97820151f..0000000000
--- a/lex/main.ml
+++ /dev/null
@@ -1,102 +0,0 @@
-(***********************************************************************)
-(* *)
-(* Objective Caml *)
-(* *)
-(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
-(* *)
-(* Copyright 1996 Institut National de Recherche en Informatique et *)
-(* en Automatique. All rights reserved. This file is distributed *)
-(* under the terms of the Q Public License version 1.0. *)
-(* *)
-(***********************************************************************)
-
-(* $Id$ *)
-
-(* The lexer generator. Command-line parsing. *)
-
-open Syntax
-open Lexgen
-
-let ml_automata = ref false
-let source_name = ref None
-let output_name = ref None
-
-let usage = "usage: ocamlex [options] sourcefile"
-
-let specs =
- ["-ml", Arg.Set ml_automata,
- " Output code that does not use the Lexing module built-in automata interpreter";
- "-o", Arg.String (fun x -> output_name := Some x),
- " <file> Set output file name to <file>";
- "-q", Arg.Set Common.quiet_mode, " Do not display informational messages";
- ]
-
-let _ =
- Arg.parse
- specs
- (fun name -> source_name := Some name)
- usage
-
-
-let main () =
-
- let source_name = match !source_name with
- | None -> Arg.usage specs usage ; exit 2
- | Some name -> name in
- let dest_name = match !output_name with
- | Some name -> name
- | None ->
- if Filename.check_suffix source_name ".mll" then
- Filename.chop_suffix source_name ".mll" ^ ".ml"
- else
- source_name ^ ".ml" in
-
- let ic = open_in_bin source_name in
- let oc = open_out dest_name in
- let tr = Common.open_tracker dest_name oc in
- let lexbuf = Lexing.from_channel ic in
- try
- let def = Parser.lexer_definition Lexer.main lexbuf in
- let (entries, transitions) = Lexgen.make_dfa def.entrypoints in
- if !ml_automata then begin
- Outputbis.output_lexdef
- source_name ic oc tr
- def.header entries transitions def.trailer
- end else begin
- let tables = Compact.compact_tables transitions in
- Output.output_lexdef source_name ic oc tr
- def.header tables entries def.trailer
- end;
- close_in ic;
- close_out oc;
- Common.close_tracker tr;
- with exn ->
- close_in ic;
- close_out oc;
- Common.close_tracker tr;
- Sys.remove dest_name;
- begin match exn with
- Parsing.Parse_error ->
- Printf.fprintf stderr
- "File \"%s\", line %d, character %d: syntax error.\n"
- source_name !Lexer.line_num
- (Lexing.lexeme_start lexbuf - !Lexer.line_start_pos)
- | Lexer.Lexical_error(msg, line, col) ->
- Printf.fprintf stderr
- "File \"%s\", line %d, character %d: %s.\n"
- source_name line col msg
- | Lexgen.Memory_overflow ->
- Printf.fprintf stderr
- "File \"%s\":\n Position memory overflow, too many bindings\n"
- source_name
- | Output.Table_overflow ->
- Printf.fprintf stderr
- "File \"%s\":\ntransition table overflow, automaton is too big\n"
- source_name
- | _ ->
- raise exn
- end;
- exit 3
-
-let _ = (* Printexc.catch *) main (); exit 0
-