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
AB
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
AB
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
Aa
(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