From 8bd48bd53cf9e1d8bd9419b2326f771598fe66b0 Mon Sep 17 00:00:00 2001 From: Pierre Wilke <pierre.wilke@centralesupelec.fr> Date: Wed, 26 Feb 2020 15:02:18 +0100 Subject: [PATCH] add test file for the lexer_generator --- src/test_lexer.ml | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/test_lexer.ml diff --git a/src/test_lexer.ml b/src/test_lexer.ml new file mode 100644 index 0000000..8c65420 --- /dev/null +++ b/src/test_lexer.ml @@ -0,0 +1,38 @@ +open E_regexp +open Lexer_generator +open Batteries +open Utils +open Symbols + +let () = + let lowercase_letters = "abcdefghijklmnopqrstuvwxyz" in + let uppercase_letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" in + let digits = "0123456789" in + let other_characters = "?!=<>_ ;,{}()[]-+*/%\n\t" in + let alphabet = char_list_of_string (lowercase_letters ^ uppercase_letters ^ digits ^ other_characters) in + let letter_regexp = char_range (char_list_of_string (uppercase_letters ^ lowercase_letters)) in + let digit_regexp = char_range (char_list_of_string digits) in + let keyword_regexp s = str_regexp (char_list_of_string s) in + let regexp_list = [ + (keyword_regexp "while", fun s -> Some (SYM_WHILE)); + (keyword_regexp "if", fun s -> Some (SYM_IF)); + ] in + + List.iteri + (fun i (rg, _) -> Printf.printf "%d: %s\n" i (string_of_regexp rg)) + regexp_list; + + let nfa = nfa_of_list_regexp regexp_list in + + Printf.printf "%s\n" (nfa_to_string nfa); + + let oc = open_out "/tmp/nfa.dot" in + nfa_to_dot oc nfa; + close_out oc; + + let dfa = dfa_of_nfa nfa in + let oc = open_out "/tmp/dfa.dot" in + dfa_to_dot oc dfa alphabet; + close_out oc; + + -- GitLab