Lecture 09
Lecture 09
LECTURE 9
DFA Minimization 2
b
DFA for (a | b )*abb
DFA Minimization 8
b a a
a b b
A,C B D E
a
b
RE R RE=>NFA
NFA=>DFA
Min. DFA
R1…R2 RE=>NFA
NFA=>DFA
Min. DFA
character Simulate Token
stream DFA stream
Lexical Analyzer Generators 16
The lexical analysis process can automated
We only need to specify
Regular expressions for tokens
Rule priorities for multiple longest match cases
Lexical Analyzer Generators 17
The lexical analysis process can automated
We only need to specify
Regular expressions for tokens
Rule priorities for multiple longest match cases
Lexical Analyzer Generators 18
Flex
generates lexical analyzer in C or C++
Jlex
written in Java. Generates lexical analyzer in Java
Lexical Analyzer Generators 19
Flex
generates lexical analyzer in C or C++
Jlex
written in Java. Generates lexical analyzer in Java
Using Flex 20
"else" {return(TOK_ELSE);}
"while"{return(TOK_WHILE)};
"<=" {return(TOK_LE);}
">=" {return(TOK_GE);}
"==" {return(TOK_EQ);}
"!=" {return(TOK_NE);}
{D}+ {return(TOK_INT);}
{id} {return(TOK_ID);}
[\n]|[\t]|[ ];
%%
File tokdefs.h 28
#define TOK_VOID 1
#define TOK_INT 2
#define TOK_IF 3
#define TOK_ELSE 4
#define TOK_WHILE 5
#define TOK_LE 6
#define TOK_GE 7
#define TOK_EQ 8
#define TOK_NE 9
#define TOK_INT 10
#define TOK_ID 111
Invoking Flex 29
flex lex.l
g++ –c lex.cpp
g++ –c main.cpp
g++ –o lex.exe lex.o main.o
lex <main.cpp