TRANSITION DIAGRAM BASED LEXICAL ANALYZER and FINITE AUTOMATA Class date : 12 August, 2013 Prepared...

Preview:

Citation preview

TRANSITION DIAGRAM BASED LEXICAL ANALYZER

andFINITE AUTOMATA

Class date : 12 August, 2013Prepared by : Karimgailiu R Panmei Roll no. : 11CS10020GROUP NO. : 9

Stream of input characters (source)

State Transition Machine 1

State Transition Machine 2

State Transition Machine 3

Token

Lex Compiler

pattern1 pattern 2 pattern 3

Simulating the transition machines :

Input string : x1, x2 ,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

Lex compiler

C Compiler

a.out

Pattern

a.out

Source code

tokens

generate state transition machines NFA : Advantage

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 symbolS : finite set of statesso : 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 a

• ϵ-transition is allowed ϵ

DFA

Definition :

D={ Σ, S, so , f, δ}where Σ : set of input symbolS : finite set of statesso : 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 DFAInput : - a string x - DFA with start state so , accepting

states F and transition function detect

Output : “yes” if accepts and “no” if rejects

Algorithm :

s= so ;

c= read_next_char(); //read_next_char() returns the next //character while(c!=‘\0’) { s=detect(s,c); c=read_next_char(); } if(s ϵ F) return yes; else return no;

THE END

Recommended