This document outlines the agenda for a class on the theory of computing. It discusses context-free grammars and converting grammars to Chomsky normal form. Specifically, it covers ambiguity in grammars, pumping lemmas for context-free grammars, and the four step process to convert any context-free grammar into Chomsky normal form by adding symbols, eliminating epsilon and unit rules, and breaking long rules. An example conversion is provided. Next week's class will cover a midterm on chapters 1 and 2.
This document outlines the agenda for a class on the theory of computing. It discusses context-free grammars and converting grammars to Chomsky normal form. Specifically, it covers ambiguity in grammars, pumping lemmas for context-free grammars, and the four step process to convert any context-free grammar into Chomsky normal form by adding symbols, eliminating epsilon and unit rules, and breaking long rules. An example conversion is provided. Next week's class will cover a midterm on chapters 1 and 2.
This document outlines the agenda for a class on the theory of computing. It discusses context-free grammars and converting grammars to Chomsky normal form. Specifically, it covers ambiguity in grammars, pumping lemmas for context-free grammars, and the four step process to convert any context-free grammar into Chomsky normal form by adding symbols, eliminating epsilon and unit rules, and breaking long rules. An example conversion is provided. Next week's class will cover a midterm on chapters 1 and 2.
Agenda • Last week – Pumping lemma – Context-free grammars • Examples, definition, strategies for building • This week – More on CFG’s • Ambiguity, Pushdown automata, pumping lemma for CFG’s • Next week – Midterm (Chapters 1 & 2) Announcement • Homework due next Tuesday (9/28) – 2.8, 2.9, 2.12, 2.13, 2.15, 2.18 d, 2.22 Ambiguity • Consider the CFG ({S},{0,1},R,S), where the rules of R are S0|1|S+S|S*S • Derive the string 0 * 1 + 1 Ambiguity S0|1|S+S|S*S • 0*1+1
S S
S * S S + S
0 S + S S * S 1
1 1 0 1
Different parse trees!
Leftmost derivation & ambiguity • A derivation of a string w in a grammar G is a leftmost derivation if every step of the derivation replaced the leftmost variable • A string is derived ambiguously in CFG G if it has two or more different leftmost derivations • The grammar G is ambiguous if it generates some string ambiguously – Some grammars are inherently ambiguous Chomsky normal form • Method of simplifying a CFG Definition: A context-free grammar is in Chomsky normal form if every rule is of one of the following forms A BC Aa where a is any terminal and A is any variable, and B, and C are any variables or terminals other than the start variable the rule S ε is permitted, where S is the start variable CFG’s and Chomsky normal form Theorem: Any context-free language is generated by a context-free grammar in Chomsky normal form. Proof idea: Convert any CFG to one in Chomsky normal form by removing or replacing all rules in the wrong form 1. Add a new start symbol 2. Eliminate ε rules of the form A ε 3. Eliminate unit rules of the form A B 4. Convert remaining rules into proper form Convert a CFG to Chomsky normal form 1. Add a new start symbol - Create the following new rule S0 S where S is the start symbol and S0 is not used in the CFG Convert a CFG to Chomsky normal form 2. Eliminate all ε rules A ε, where A is not the start variable - For each rule with an occurrence of A on the right-hand side, add a new rule with the A deleted R uAv becomes R uAv | uv R uAvAw becomes R uAvAw | uvAw | uAvw | uvw - If we have R A, replace it with R ε unless we had already removed R ε Convert a CFG to Chomsky normal form 3. Eliminate all unit rules of the form AB - For each rule B u, add a new rule A u, where u is a string of terminals and variables, unless this rule had already been removed - Repeat until all unit rules have been replaced Convert a CFG to Chomsky normal form 4. Convert remaining rules into proper form - What’s left? - Replace each rule A u1u2…uk, where k 3 and ui is a variable or a terminal with k-1 rules A u1A1 A1 u2A2 … Ak-2 uk-1uk Example S S1 | S2 S1 S1b | Ab | ε A aAb | ab S2 S2a | Ba | ε B bBa | ba
Step 1: Add a new start symbol
Example S0 S S S1 | S2 S1 S1b | Ab A aAb | ab | ε S2 S2a | Ba B bBa | ba | ε
Step 2: Eliminate ε rules
Example S0 S S S1 | S2 S1 S1b | Ab | b A aAb | ab S2 S2a | Ba | a B bBa | ba
Step 3: Eliminate all unit rules
Example S0 S1b | Ab | b | S2a | Ba | a S S1b | Ab | b | S2a | Ba | a S1 S1b | Ab | b A aAb | ab S2 S2a | Ba | a B bBa | ba
Step 4: Convert remaining rules to
proper form Example S0 S1b | Ab | b | S2a | Ba | a S S1b | Ab | b | S2a | Ba | a S1 S1b | Ab | b A aA1 | ab A1 Ab S2 S2a | Ba | a B bB1 | ba B1 Ba Tomorrow • Pushdown automata