Skip to content
Snippets Groups Projects
Commit 4b71c93d authored by Putegnat Theo's avatar Putegnat Theo
Browse files

Modifications lexeur suite au mail de conseil

parent 1ba848df
No related branches found
No related tags found
No related merge requests found
......@@ -69,7 +69,7 @@ let list_regexp : (regexp * (string -> token option)) list =
(keyword_regexp "while", fun _ -> Some (SYM_WHILE));
(keyword_regexp "int", fun _ -> Some (SYM_INT));
(* begin TODO *)
(Eps, fun _ -> Some (SYM_VOID));
(keyword_regexp "void", fun _ -> Some (SYM_VOID));
(keyword_regexp "char", fun _ -> Some (SYM_CHAR));
(keyword_regexp "if", fun _ -> Some (SYM_IF));
(keyword_regexp "else", fun _ -> Some (SYM_ELSE));
......@@ -88,7 +88,7 @@ let list_regexp : (regexp * (string -> token option)) list =
(keyword_regexp "]", fun _ -> Some (SYM_RBRACKET));
(keyword_regexp "(", fun _ -> Some (SYM_LPARENTHESIS));
(keyword_regexp ")", fun _ -> Some (SYM_RPARENTHESIS));
(keyword_regexp "|", fun _ -> Some (SYM_SEMICOLON));
(keyword_regexp ";", fun _ -> Some (SYM_SEMICOLON));
(keyword_regexp ",", fun _ -> Some (SYM_COMMA));
(keyword_regexp "=", fun _ -> Some (SYM_ASSIGN));
(keyword_regexp "==", fun _ -> Some (SYM_EQUALITY));
......@@ -97,7 +97,7 @@ let list_regexp : (regexp * (string -> token option)) list =
(keyword_regexp ">", fun _ -> Some (SYM_GT));
(keyword_regexp "<=", fun _ -> Some (SYM_LEQ));
(keyword_regexp ">=", fun _ -> Some (SYM_GEQ));
(identifier_material, fun s -> Some (SYM_IDENTIFIER s));
(Cat(digit_regexp , plus(identifier_material)), fun s -> Some (SYM_IDENTIFIER s));
(* end TODO *)
(Cat(keyword_regexp "//",
Cat(Star (char_range (List.filter (fun c -> c <> '\n') alphabet)),
......
......@@ -382,7 +382,16 @@ let tokenize_one (d : dfa) (w: char list) : lexer_result * char list =
(current_token: char list) (last_accepted: lexer_result * char list)
: lexer_result * char list =
(* TODO *)
last_accepted
match w with
| [] -> LRtoken SYM_EOF , []
| c::r ->
match d.dfa_step q c with
| None -> last_accepted
| Some qnext ->
match List.assoc_opt qnext d.dfa_final with
| None -> recognize qnext r (current_token @ [c]) last_accepted
| Some t -> recognize qnext r (current_token @ [c]) (LRtoken (Option.get(t (string_of_char_list (current_token @ [c])))),r)
in
recognize d.dfa_initial w [] (LRerror, w)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment