1995-08-09 08:06:35 -07:00
|
|
|
(***********************************************************************)
|
|
|
|
(* *)
|
1996-04-30 07:53:58 -07:00
|
|
|
(* Objective Caml *)
|
1995-08-09 08:06:35 -07:00
|
|
|
(* *)
|
|
|
|
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
|
|
|
|
(* *)
|
1996-04-30 07:53:58 -07:00
|
|
|
(* Copyright 1996 Institut National de Recherche en Informatique et *)
|
1995-08-09 08:06:35 -07:00
|
|
|
(* Automatique. Distributed only by permission. *)
|
|
|
|
(* *)
|
|
|
|
(***********************************************************************)
|
|
|
|
|
|
|
|
(* $Id$ *)
|
|
|
|
|
1995-05-04 03:15:53 -07:00
|
|
|
(* The lexer generator. Command-line parsing. *)
|
|
|
|
|
|
|
|
#open "syntax";;
|
|
|
|
#open "testscanner";;
|
|
|
|
#open "grammar";;
|
|
|
|
#open "lexgen";;
|
|
|
|
#open "output";;
|
|
|
|
|
|
|
|
let main () =
|
|
|
|
ic := stdin;
|
|
|
|
oc := stdout;
|
|
|
|
let lexbuf = lexing.from_channel ic in
|
|
|
|
let (Lexdef(header,_) as def) =
|
|
|
|
try
|
|
|
|
grammar.lexer_definition testscanner.main lexbuf
|
|
|
|
with
|
|
|
|
parsing.Parse_error x ->
|
|
|
|
prerr_string "Syntax error around char ";
|
|
|
|
prerr_int (lexing.lexeme_start lexbuf);
|
|
|
|
prerr_endline ".";
|
|
|
|
sys.exit 2
|
|
|
|
| scan_aux.Lexical_error s ->
|
|
|
|
prerr_string "Lexical error around char ";
|
|
|
|
prerr_int (lexing.lexeme_start lexbuf);
|
|
|
|
prerr_string ": ";
|
|
|
|
prerr_string s;
|
|
|
|
prerr_endline ".";
|
|
|
|
sys.exit 2 in
|
|
|
|
let ((init, states, acts) as dfa) = make_dfa def in
|
|
|
|
output_lexdef header dfa
|
|
|
|
;;
|
|
|
|
|
|
|
|
main(); sys.exit 0
|
|
|
|
;;
|