diff --git a/Deve/README.md b/Deve/README.md index c7490b3..df63360 100644 --- a/Deve/README.md +++ b/Deve/README.md @@ -43,4 +43,8 @@ Sample run: - : token list = [LET; NAME "x"; EQUALS; INT 5; IN; IF; NAME "x"; STAR; NAME "dummy"; THEN; INT 321; ELSE; EOF] +# allTokens "x % abc Upper ??@ hey";; +- : token list = +[NAME "x"; ERROR '%'; NAME "abc"; ERROR 'U'; NAME "pper"; ERROR '?'; + ERROR '?'; ERROR '@'; NAME "hey"; EOF] ``` diff --git a/Deve/lexer.ml b/Deve/lexer.ml index 442f640..dee349f 100644 --- a/Deve/lexer.ml +++ b/Deve/lexer.ml @@ -10,6 +10,7 @@ type token = INT of int | PLUS | STAR | MINUS | SLASH | LET | EQUALS | IN | IF | THEN | ELSE + | ERROR of char | EOF ;; @@ -50,6 +51,7 @@ let rec tokenize chars = tokenizeInt rest (digitToInt c) | c::rest when isLowercaseLetter(c) -> tokenizeName rest (charToString c) + | c::rest -> (ERROR c)::(tokenize rest) and tokenizeInt chars n = match chars with