Lexical Analyser
Lexical Analyser
regular languages
regular expressions
notation
(r) = L(r)
(r)|(s) = L(r) U L(s)
(r)(s) = L(r)L(s)
(r)* = L(r)*
precedence
closure
concatenation
alternation
regular grammar
easy
whitespace
<ws> ::= <ws>' ' | <ws>'\t' | ' ' | '\t'
keywords / operators
comments
nested?
count nesting level
hard
identifiers
alphabetic + k alphanumerics
numbers
letter ::= (a|b|c|...|z|A|B|C|...|Z)
integer ::= (+|-|∈)(0|1..9)digit*)
id ::= letter(letter|digit)*
need powerful notation
recogniser
DFA
tool
scanner generator
build NDFA
convert to DFA
create scanner code
javaCC