1 / 14

About Grammars

This text explores the simplification of grammars, including the removal of useless symbols, epsilon productions, and unit productions. It also discusses Chomsky Normal Form and Greibach Normal Form, as well as the equivalence between context-free grammars and pushdown automata.

rmcnichols
Download Presentation

About Grammars

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. About Grammars Hopcroft, Motawi, Ullman,Chap 7.1, 6.3, 5.4

  2. About grammars • Normal forms for grammars • Equivalence between CFGs and PDAs • Grammar Ambiguity

  3. Grammar Productions • Formal definition of a grammar provides much leeway • Productions can be simplified or restricted to make proofs about CFGs simpler

  4. 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

  5. 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

  6. 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

  7. 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 – {є}

  8. 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

  9. 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?

  10. 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?

  11. 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

  12. 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 …

  13. 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

  14. PDA to CFG • More elaborate construction • Variables in the resulting grammar dependent on states and stack symbols • Read section 6.3

More Related