diff options
| author | Sébastien Hinderer <Sebastien.Hinderer@inria.fr> | 2019-05-06 23:19:36 +0200 |
|---|---|---|
| committer | Sébastien Hinderer <Sebastien.Hinderer@inria.fr> | 2019-05-07 11:49:44 +0200 |
| commit | 6f2d142df2a5c1718745ed712f83d97bb38c7947 (patch) | |
| tree | e4092715951c8ec308f610e790e25f746d6b1769 /tools | |
| parent | a201ade7f3007669868dab3abf53d55dcd77a676 (diff) | |
| download | ocaml-6f2d142df2a5c1718745ed712f83d97bb38c7947.tar.gz | |
Remove the ocaml299to3 tool
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/.depend | 2 | ||||
| -rw-r--r-- | tools/Makefile | 13 | ||||
| -rw-r--r-- | tools/lexer299.mll | 461 | ||||
| -rw-r--r-- | tools/ocaml299to3.ml | 141 |
4 files changed, 0 insertions, 617 deletions
diff --git a/tools/.depend b/tools/.depend index 0a471a1b46..f1cbe115e4 100644 --- a/tools/.depend +++ b/tools/.depend @@ -162,8 +162,6 @@ objinfo.cmx : \ ../file_formats/cmo_format.cmi \ ../file_formats/cmi_format.cmx \ ../bytecomp/bytesections.cmx -ocaml299to3.cmo : -ocaml299to3.cmx : ocamlcp.cmo : \ ../driver/main_args.cmi ocamlcp.cmx : \ diff --git a/tools/Makefile b/tools/Makefile index 52a1cdf614..ea1b9dcdf6 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -174,21 +174,8 @@ $(call byte_and_opt,ocamlmktop,$(OCAMLMKTOP_IMPORTS) $(OCAMLMKTOP),) # Converter olabl/ocaml 2.99 to ocaml 3 -OCAML299TO3=lexer299.cmo ocaml299to3.cmo LIBRARY3=config.cmo build_path_prefix_map.cmo misc.cmo warnings.cmo location.cmo -ocaml299to3: $(OCAML299TO3) - $(CAMLC) $(LINKFLAGS) -o ocaml299to3 $(LIBRARY3) $(OCAML299TO3) - -lexer299.ml: lexer299.mll - $(CAMLLEX) lexer299.mll - -#install:: -# $(INSTALL_PROG) ocaml299to3 "$(INSTALL_BINDIR)/ocaml299to3$(EXE)" - -clean:: - rm -f ocaml299to3 lexer299.ml - # Label remover for interface files (upgrade 3.02 to 3.03) SCRAPELABELS= lexer301.cmo scrapelabels.cmo diff --git a/tools/lexer299.mll b/tools/lexer299.mll deleted file mode 100644 index 134539991b..0000000000 --- a/tools/lexer299.mll +++ /dev/null @@ -1,461 +0,0 @@ -(**************************************************************************) -(* *) -(* OCaml *) -(* *) -(* 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 GNU Lesser General Public License version 2.1, with the *) -(* special exception on linking described in the file LICENSE. *) -(* *) -(**************************************************************************) - -(* The lexer definition *) - -{ -open Lexing -open Misc - -type token = - AMPERAMPER - | AMPERSAND - | AND - | AS - | ASSERT - | BACKQUOTE - | BAR - | BARBAR - | BARRBRACKET - | BEGIN - | CHAR of (char) - | CLASS - | COLON - | COLONCOLON - | COLONEQUAL - | COLONGREATER - | COMMA - | CONSTRAINT - | DO - | DONE - | DOT - | DOTDOT - | DOWNTO - | ELSE - | END - | EOF - | EQUAL - | EXCEPTION - | EXTERNAL - | FALSE - | FLOAT of (string) - | FOR - | FUN - | FUNCTION - | FUNCTOR - | GREATER - | GREATERRBRACE - | GREATERRBRACKET - | HASH - | IF - | IN - | INCLUDE - | INFIXOP0 of (string) - | INFIXOP1 of (string) - | INFIXOP2 of (string) - | INFIXOP3 of (string) - | INFIXOP4 of (string) - | INHERIT - | INITIALIZER - | INT of (int) - | LABEL of (string) - | LABELID of (string) - | LAZY - | LBRACE - | LBRACELESS - | LBRACKET - | LBRACKETBAR - | LBRACKETLESS - | LESS - | LESSMINUS - | LET - | LIDENT of (string) - | LPAREN - | MATCH - | METHOD - | MINUSGREATER - | MODULE - | MUTABLE - | NEW - | OBJECT - | OF - | OPEN - | OR - | PARSER - | PREFIXOP of (string) - | PRIVATE - | QUESTION - | QUESTION2 - | QUOTE - | RBRACE - | RBRACKET - | REC - | RPAREN - | SEMI - | SEMISEMI - | SIG - | STAR - | STRING of (string) - | STRUCT - | SUBTRACTIVE of (string) - | THEN - | TO - | TRUE - | TRY - | TYPE - | UIDENT of (string) - | UNDERSCORE - | VAL - | VIRTUAL - | WHEN - | WHILE - | WITH - -type error = - | Illegal_character of char - | Unterminated_comment - | Unterminated_string - | Unterminated_string_in_comment -;; - -exception Error of error * int * int - -(* The table of keywords *) - -let keyword_table = - create_hashtable 149 [ - "and", AND; - "as", AS; - "assert", ASSERT; - "begin", BEGIN; - "class", CLASS; - "constraint", CONSTRAINT; - "do", DO; - "done", DONE; - "downto", DOWNTO; - "else", ELSE; - "end", END; - "exception", EXCEPTION; - "external", EXTERNAL; - "false", FALSE; - "for", FOR; - "fun", FUN; - "function", FUNCTION; - "functor", FUNCTOR; - "if", IF; - "in", IN; - "include", INCLUDE; - "inherit", INHERIT; - "initializer", INITIALIZER; - "lazy", LAZY; - "let", LET; - "match", MATCH; - "method", METHOD; - "module", MODULE; - "mutable", MUTABLE; - "new", NEW; - "object", OBJECT; - "of", OF; - "open", OPEN; - "or", OR; - "parser", PARSER; - "private", PRIVATE; - "rec", REC; - "sig", SIG; - "struct", STRUCT; - "then", THEN; - "to", TO; - "true", TRUE; - "try", TRY; - "type", TYPE; - "val", VAL; - "virtual", VIRTUAL; - "when", WHEN; - "while", WHILE; - "with", WITH; - - "mod", INFIXOP3("mod"); - "land", INFIXOP3("land"); - "lor", INFIXOP3("lor"); - "lxor", INFIXOP3("lxor"); - "lsl", INFIXOP4("lsl"); - "lsr", INFIXOP4("lsr"); - "asr", INFIXOP4("asr") -] - -(* To buffer string literals *) - -let initial_string_buffer = String.create 256 -let string_buff = ref initial_string_buffer -let string_index = ref 0 - -let reset_string_buffer () = - string_buff := initial_string_buffer; - string_index := 0 - -let store_string_char c = - if !string_index >= String.length (!string_buff) then begin - let new_buff = String.create (String.length (!string_buff) * 2) in - String.blit (!string_buff) 0 new_buff 0 (String.length (!string_buff)); - string_buff := new_buff - end; - String.unsafe_set (!string_buff) (!string_index) c; - incr string_index - -let get_stored_string () = - let s = String.sub (!string_buff) 0 (!string_index) in - string_buff := initial_string_buffer; - s - -(* To translate escape sequences *) - -let char_for_backslash = function - | 'n' -> '\010' - | 'r' -> '\013' - | 'b' -> '\008' - | 't' -> '\009' - | c -> c - -let char_for_decimal_code lexbuf i = - let c = 100 * (Char.code(Lexing.lexeme_char lexbuf i) - 48) + - 10 * (Char.code(Lexing.lexeme_char lexbuf (i+1)) - 48) + - (Char.code(Lexing.lexeme_char lexbuf (i+2)) - 48) in - Char.chr(c land 0xFF) - -(* To store the position of the beginning of a string and comment *) -let string_start_pos = ref 0;; -let comment_start_pos = ref [];; - -(* Error report *) - -open Format - -let report_error ppf = function - | Illegal_character c -> - fprintf ppf "Illegal character (%s)" (Char.escaped c) - | Unterminated_comment -> - fprintf ppf "Comment not terminated" - | Unterminated_string -> - fprintf ppf "String literal not terminated" - | Unterminated_string_in_comment -> - fprintf ppf "This comment contains an unterminated string literal" -;; - -} - -let blank = [' ' '\010' '\013' '\009' '\012'] -let lowercase = ['a'-'z' '\223'-'\246' '\248'-'\255' '_'] -let uppercase = ['A'-'Z' '\192'-'\214' '\216'-'\222'] -let identchar = - ['A'-'Z' 'a'-'z' '_' '\192'-'\214' '\216'-'\246' '\248'-'\255' '\'' '0'-'9'] -let symbolchar = - ['!' '$' '%' '&' '*' '+' '-' '.' '/' ':' '<' '=' '>' '?' '@' '^' '|' '~'] -let symbolchar2 = - ['!' '$' '%' '&' '*' '+' '-' '.' '/' '<' '=' '>' '?' '@' '^' '|' '~'] -(* ['!' '$' '&' '*' '+' '-' '.' '/' ':' '<' '=' '>' '?' '@' '^' '|' '~'] *) -let decimal_literal = ['0'-'9']+ -let hex_literal = '0' ['x' 'X'] ['0'-'9' 'A'-'F' 'a'-'f']+ -let oct_literal = '0' ['o' 'O'] ['0'-'7']+ -let bin_literal = '0' ['b' 'B'] ['0'-'1']+ -let float_literal = - ['0'-'9']+ ('.' ['0'-'9']* )? (['e' 'E'] ['+' '-']? ['0'-'9']+)? - -rule token = parse - blank + - { token lexbuf } - | "_" - { UNDERSCORE } - | lowercase identchar * ':' [ ^ ':' '=' '>'] - { let s = Lexing.lexeme lexbuf in - lexbuf.lex_curr_pos <- lexbuf.lex_curr_pos - 1; - lexbuf.lex_curr_p <- - {lexbuf.lex_curr_p with pos_cnum = lexbuf.lex_curr_p.pos_cnum - 1}; - LABEL (String.sub s 0 (String.length s - 2)) } -(* - | lowercase identchar * ':' - { let s = Lexing.lexeme lexbuf in - LABEL (String.sub s 0 (String.length s - 1)) } - | '%' lowercase identchar * -*) - | ':' lowercase identchar * - { let s = Lexing.lexeme lexbuf in - let l = String.length s - 1 in - LABELID (String.sub s 1 l) } - | lowercase identchar * - { let s = Lexing.lexeme lexbuf in - try - Hashtbl.find keyword_table s - with Not_found -> - LIDENT s } - | uppercase identchar * - { UIDENT(Lexing.lexeme lexbuf) } (* No capitalized keywords *) - | decimal_literal | hex_literal | oct_literal | bin_literal - { INT (int_of_string(Lexing.lexeme lexbuf)) } - | float_literal - { FLOAT (Lexing.lexeme lexbuf) } - | "\"" - { reset_string_buffer(); - let string_start = Lexing.lexeme_start lexbuf in - string_start_pos := string_start; - string lexbuf; - lexbuf.Lexing.lex_start_pos <- - string_start - lexbuf.Lexing.lex_abs_pos; - STRING (get_stored_string()) } - | "'" [^ '\\' '\''] "'" - { CHAR(Lexing.lexeme_char lexbuf 1) } - | "'" '\\' ['\\' '\'' 'n' 't' 'b' 'r'] "'" - { CHAR(char_for_backslash (Lexing.lexeme_char lexbuf 2)) } - | "'" '\\' ['0'-'9'] ['0'-'9'] ['0'-'9'] "'" - { CHAR(char_for_decimal_code lexbuf 2) } - | "(*" - { comment_start_pos := [Lexing.lexeme_start lexbuf]; - comment lexbuf; - token lexbuf } - | "(*)" - { let loc = { Location.loc_start = Lexing.lexeme_start_p lexbuf; - Location.loc_end = Lexing.lexeme_end_p lexbuf; - Location.loc_ghost = false } - in - Location.prerr_warning loc (Warnings.Comment_start); - comment_start_pos := [Lexing.lexeme_start lexbuf]; - comment lexbuf; - token lexbuf - } - | "*)" - { let loc = { Location.loc_start = Lexing.lexeme_start_p lexbuf; - Location.loc_end = Lexing.lexeme_end_p lexbuf; - Location.loc_ghost = false } - in - Location.prerr_warning loc Warnings.Comment_not_end; - lexbuf.Lexing.lex_curr_pos <- lexbuf.Lexing.lex_curr_pos - 1; - STAR - } - | "#" [' ' '\t']* ['0'-'9']+ [^ '\n' '\r'] * ('\n' | '\r' | "\r\n") - (* # linenum ... *) - { token lexbuf } - | "#" { HASH } - | "&" { AMPERSAND } - | "&&" { AMPERAMPER } - | "`" { BACKQUOTE } - | "'" { QUOTE } - | "(" { LPAREN } - | ")" { RPAREN } - | "*" { STAR } - | "," { COMMA } - | "?" { QUESTION } - | "??" { QUESTION2 } - | "->" { MINUSGREATER } - | "." { DOT } - | ".." { DOTDOT } - | ":" { COLON } - | "::" { COLONCOLON } - | ":=" { COLONEQUAL } - | ":>" { COLONGREATER } - | ";" { SEMI } - | ";;" { SEMISEMI } - | "<" { LESS } - | "<-" { LESSMINUS } - | "=" { EQUAL } - | "[" { LBRACKET } - | "[|" { LBRACKETBAR } - | "[<" { LBRACKETLESS } - | "]" { RBRACKET } - | "{" { LBRACE } - | "{<" { LBRACELESS } - | "|" { BAR } - | "||" { BARBAR } - | "|]" { BARRBRACKET } - | ">" { GREATER } - | ">]" { GREATERRBRACKET } - | "}" { RBRACE } - | ">}" { GREATERRBRACE } - - | "!=" { INFIXOP0 "!=" } - | "-" { SUBTRACTIVE "-" } - | "-." { SUBTRACTIVE "-." } - - | ['!' '~'] symbolchar * - { PREFIXOP(Lexing.lexeme lexbuf) } - | '?' symbolchar2 * - { PREFIXOP(Lexing.lexeme lexbuf) } - | ['=' '<' '>' '|' '&' '$'] symbolchar * - { INFIXOP0(Lexing.lexeme lexbuf) } - | ['@' '^'] symbolchar * - { INFIXOP1(Lexing.lexeme lexbuf) } - | ['+' '-'] symbolchar * - { INFIXOP2(Lexing.lexeme lexbuf) } - | "**" symbolchar * - { INFIXOP4(Lexing.lexeme lexbuf) } - | ['*' '/' '%'] symbolchar * - { INFIXOP3(Lexing.lexeme lexbuf) } - | eof { EOF } - | _ - { raise (Error(Illegal_character ((Lexing.lexeme lexbuf).[0]), - Lexing.lexeme_start lexbuf, Lexing.lexeme_end lexbuf)) } - -and comment = parse - "(*" - { comment_start_pos := Lexing.lexeme_start lexbuf :: !comment_start_pos; - comment lexbuf; - } - | "*)" - { match !comment_start_pos with - | [] -> assert false - | [x] -> () - | _ :: l -> comment_start_pos := l; - comment lexbuf; - } - | "\"" - { reset_string_buffer(); - string_start_pos := Lexing.lexeme_start lexbuf; - begin try string lexbuf - with Error (Unterminated_string, _, _) -> - let st = List.hd !comment_start_pos in - raise (Error (Unterminated_string_in_comment, st, st + 2)) - end; - string_buff := initial_string_buffer; - comment lexbuf } - | "''" - { comment lexbuf } - | "'" [^ '\\' '\''] "'" - { comment lexbuf } - | "'\\" ['\\' '\'' 'n' 't' 'b' 'r'] "'" - { comment lexbuf } - | "'\\" ['0'-'9'] ['0'-'9'] ['0'-'9'] "'" - { comment lexbuf } - | eof - { let st = List.hd !comment_start_pos in - raise (Error (Unterminated_comment, st, st + 2)); - } - | _ - { comment lexbuf } - -and string = parse - '"' - { () } - | '\\' ("\010" | "\013" | "\013\010") [' ' '\009'] * - { string lexbuf } - | '\\' ['\\' '"' 'n' 't' 'b' 'r'] - { store_string_char(char_for_backslash(Lexing.lexeme_char lexbuf 1)); - string lexbuf } - | '\\' ['0'-'9'] ['0'-'9'] ['0'-'9'] - { store_string_char(char_for_decimal_code lexbuf 1); - string lexbuf } - | eof - { raise (Error (Unterminated_string, - !string_start_pos, !string_start_pos+1)) } - | _ - { store_string_char(Lexing.lexeme_char lexbuf 0); - string lexbuf } diff --git a/tools/ocaml299to3.ml b/tools/ocaml299to3.ml deleted file mode 100644 index f0352c19f0..0000000000 --- a/tools/ocaml299to3.ml +++ /dev/null @@ -1,141 +0,0 @@ -(**************************************************************************) -(* *) -(* OCaml *) -(* *) -(* Jacques Garrigue, Kyoto University RIMS *) -(* *) -(* Copyright 1996 Institut National de Recherche en Informatique et *) -(* en Automatique. *) -(* *) -(* All rights reserved. This file is distributed under the terms of *) -(* the GNU Lesser General Public License version 2.1, with the *) -(* special exception on linking described in the file LICENSE. *) -(* *) -(**************************************************************************) - -open Lexer299 - -let input_buffer = Buffer.create 16383 -let input_function ic buf len = - let len = input ic buf 0 len in - Buffer.add_substring input_buffer buf 0 len; - len - -let output_buffer = Buffer.create 16383 - -let modified = ref false - -let convert buffer = - let input_pos = ref 0 in - let copy_input stop = - Buffer.add_substring output_buffer (Buffer.contents input_buffer) - !input_pos (stop - !input_pos); - input_pos := stop - in - let last = ref (EOF, 0, 0) in - try while true do - let token = Lexer299.token buffer - and start = Lexing.lexeme_start buffer - and stop = Lexing.lexeme_end buffer - and last_token, last_start, last_stop = !last in - begin match token with - | LABEL l0 -> - let l = if l0 = "fun" then "f" else l0 in - begin match last_token with - | PREFIXOP "?(" -> - modified := true; - copy_input last_start; - Buffer.add_char output_buffer '?'; - Buffer.add_string output_buffer l; - Buffer.add_string output_buffer ":("; - input_pos := stop - | QUESTION | LPAREN | LBRACE | SEMI | MINUSGREATER - | EQUAL | COLON | COLONGREATER - | VAL | MUTABLE | EXTERNAL | METHOD | OF -> - if l0 = "fun" then begin - modified := true; - copy_input start; - Buffer.add_string output_buffer l; - Buffer.add_char output_buffer ':'; - input_pos := stop - end - | _ -> - modified := true; - copy_input start; - Buffer.add_char output_buffer '~'; - Buffer.add_string output_buffer l; - Buffer.add_char output_buffer ':'; - input_pos := stop - end - | LABELID l -> - modified := true; - begin match last_token with - | PREFIXOP "?(" -> - copy_input last_start; - Buffer.add_string output_buffer "?("; - Buffer.add_string output_buffer l; - input_pos := stop - | LPAREN -> - copy_input last_start; - Buffer.add_string output_buffer "~("; - Buffer.add_string output_buffer l; - input_pos := stop - | QUESTION -> - copy_input last_stop; - Buffer.add_string output_buffer l; - input_pos := stop - | _ -> - copy_input start; - Buffer.add_char output_buffer '~'; - Buffer.add_string output_buffer l; - input_pos := stop - end - | EOF -> raise End_of_file - | _ -> () - end; - if last_token = QUESTION && token = LPAREN then - last := (PREFIXOP "?(", last_start, stop) - else - last := (token, start, stop) - done with - End_of_file -> - copy_input (Buffer.length input_buffer) - -let convert_file name = - let ic = open_in name in - Buffer.clear input_buffer; - Buffer.clear output_buffer; - modified := false; - begin - try convert (Lexing.from_function (input_function ic)); close_in ic - with exn -> close_in ic; raise exn - end; - if !modified then begin - let backup = name ^ ".bak" in - if Sys.file_exists backup then Sys.remove name - else Sys.rename name backup; - let oc = open_out name in - Buffer.output_buffer oc output_buffer; - close_out oc - end - -let _ = - if Array.length Sys.argv < 2 || Sys.argv.(1) = "-h" || Sys.argv.(1) = "-help" - then begin - print_endline "Usage: ocaml299to3 <source file> ..."; - print_endline "Description:"; - print_endline - "Convert OCaml 2.99 O'Labl-style labels in implementation files to"; - print_endline - "a syntax compatible with version 3. Also `fun:' labels are replaced \ - by `f:'."; - print_endline "Other syntactic changes are not handled."; - print_endline "Old files are renamed to <file>.bak."; - print_endline "Interface files do not need label syntax conversion."; - exit 0 - end; - for i = 1 to Array.length Sys.argv - 1 do - let name = Sys.argv.(i) in - prerr_endline ("Converting " ^ name); - Printexc.catch convert_file name - done |
