Finite Automata & Regular Languages

Download Report

Transcript Finite Automata & Regular Languages

About Grammars
Hopcroft, Motawi, Ullman,
Chap 7.1, 6.3, 5.4
About grammars



Normal forms for grammars
Equivalence between CFGs and PDAs
Grammar Ambiguity
Grammar Productions


Formal definition of a grammar provides
much leeway
Productions can be simplified or
restricted to make proofs about CFGs
simpler
Simplifications

Removing useless symbols


Removing є-productions


Aє
Removing unit productions


Those that cannot be derived from S and those
that cannot reduce to a terminal string
AB
Normal forms
e.g., Chomsky Normal Form
Useless symbols


We want to ensure all productions in the
grammar have no useless symbols, i.e., all
symbols are generating and reachable
Generating symbols


All variables that could eventually derive a string
of terminals; i.e., all A in V, such that there exists
a string w of terminals where A * w
Reachable symbols

All variables that can be reached from the start
symbol; i.e., all A in V, such that S * uAw, for
some u and w
Removing useless productions

Remove productions with non-generating
symbols


Requires identifying generating symbols
recursively: right hand side of production contains
only terminals and generating symbols
Remove productions with non-reachable
symbols

Requires identifying reachable symbols
recursively: S is reachable, and so are symbols
that exist on the right hand side of productions
with reachable symbols on the left hand side
Epsilon Productions



є-productions: productions of the form A  є
Nullable symbols: symbols A where
A  є or A  B1B2…Bn such that each Bi is
nullable
For each production that has a nullable symbol on
the right hand side, add a production without that
symbol; apply rule iteratively on resulting productions


After this step, all є-productions can be removed
Note, if the language L generated by the original
grammar includes є, then the language generated by
the resulting grammar will be L – {є}
Unit Productions


Unit productions: all productions of the form
AB
Removing unit productions



Identify unit pairs: pairs of variables (A, B) such
that A * B, and the derivation involves only unit
productions
For each unit pair (A, B), add the production A 
w, whenever B  w and w is not a variable
Unit productions may now be removed
Chomsky Normal Form

CNF: all productions are of the form



A  BC
Aa
(B, C are variables)
(a is a terminal)
How do we convert a grammar to an
equivalent CNF grammar?
Greibach Normal Form

GNF: all productions are of the form




A  aB1B2…Bn
Note that A  a is allowed
Note that if the grammar is GNF, each
step in a derivation of a string adds a
terminal
How do we convert a grammar to an
equivalent GNF grammar?
Equivalence between
CFGs and PDAs

Converting CFGs to PDAs


Easier to use PDA version that accepts by
empty stack
Given a context free grammar
G = (V,T,P,S), construct a pushdown
automaton M

Need to specify states, input and stack
symbols and the transition function
CFG to PDA

M = (Q, , , , q0, Z0), where






Q contains a single state, q0
=T
 = {V  T}
Z0 = S
Note: no need for F (final states) since we
are accepting by empty stack
And  is …
CFG to PDA

Transition function  is based on the
variables, productions and terminals of the
grammar:



(q0 , є , A) = (q0, w) whenever A  w
(q0 , a , a) = (q0, є ) for each a in T
Easier and more intuitive if the grammar is of
GNF

(q0 , a , A) = (q0, B1B2…Bn) for each production
A  aB1B2…Bn
PDA to CFG



More elaborate construction
Variables in the resulting grammar
dependent on states and stack symbols
Read section 6.3