TRANSITION DIAGRAM BASED LEXICAL ANALYZER and FINITE AUTOMATA
TRANSITION DIAGRAM BASED LEXICAL ANALYZER and FINITE AUTOMATA Class date : 12 August, 2013 Prepared by : Karimgailiu R Panmei Roll no. : 11 CS 10020 GROUP NO. : 9
State Transition Machine 1 State Transition Machine 2 Stream of input characters (source) Token State Transition Machine 3 Lex Compiler pattern 1 pattern 2 pattern 3
Simulating the transition machines : Input string : x 1, x 2 , x 3 …… x n • Scan the input using forward pointer • Machine accepts or rejects based on the transition function • Match the longest prefix of the input • If accepted, token is produced
Two approach to simulate the machine : Approach 1 : Sequential simulation • Sequentially simulate the transition machines • If the previous machine fails, reset the forward pointer • Start the next transition machine
Approach 2 : Parallel simulation • Simulate all transition diagrams in parallel • The machine stops when no match is found
Pattern : Define based on regular expression Pattern Lex compiler generate state transition machines NFA : Advantage C Compiler a. out Source code a. out tokens DFA : advantage
FINITE AUTOMATA • Recognize regular languages • Accepts or rejects a possible input string • Two types : 1. Non deterministic finite automata(NFA) 2. Deterministic finite automata(DFA)
NFA Definition : N={ Σ, S, so , F, Δ} where Σ : set of input symbol S : finite set of states so : start state F : finite set of final states Δ : transition function (S × Σ → P(S)) where P(S) is the power set of S
More about NFA • Given an input a, NFA allows to go from one state to a multiple state a • ϵ-transition is allowed ϵ
DFA Definition : D={ Σ, S, so , f, δ} where Σ : set of input symbol S : finite set of states so : start state F : finite set of final states δ : transition function (δ : S × Σ → S)
More on DFA • No ϵ-transition is allowed • For a given input a, DFA allows to moves from one state to a single state a
Simulating DFA Input : - a string x - DFA with start state so , accepting states F and transition function detect Output : “yes” if accepts and “no” if rejects