140 likes | 310 Views
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
E N D
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 • Those that cannot be derived from S and those that cannot reduce to a terminal string • Removing є-productions • A є • Removing unit productions • 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 whereA є 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 (B, C are variables) • A a (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 betweenCFGs and PDAs • Converting CFGs to PDAs • Easier to use PDA version that accepts by empty stack • Given a context free grammarG = (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 productionA aB1B2…Bn
PDA to CFG • More elaborate construction • Variables in the resulting grammar dependent on states and stack symbols • Read section 6.3