320 likes | 595 Views
L ECTURE 7 Theory of Computation Context-free grammar (CFG) Equivalence of CFGs and PDAs. Intro to Theory of Computation. CS 464. Sofya Raskhodnikova. CONTEXT-FREE GRAMMARS (CFGs). production rules. start variable. A → 0 A 1. A → B. B → #. variables. terminals. A. 0A1.
E N D
LECTURE7 • Theory of Computation • Context-free grammar (CFG) • Equivalence of CFGs and PDAs Intro to Theory of Computation CS 464 Sofya Raskhodnikova Sofya Raskhodnikova; based on slides by Nick Hopper
CONTEXT-FREEGRAMMARS (CFGs) production rules start variable A → 0A1 A → B B → # variables terminals A 0A1 00A11 00B11 00#11 Sofya Raskhodnikova; based on slides by Nick Hopper
VALLEY GIRL GRAMMAR <PHRASE> → <FILLER><PHRASE> <PHRASE> → <START><END> <FILLER> → LIKE <FILLER> → UMM <START> → YOU KNOW <START> → ε <END> → GAG ME WITH A SPOON <END> → AS IF <END> → WHATEVER <END> → LOSER Sofya Raskhodnikova; based on slides by Nick Hopper
VALLEY GIRL GRAMMAR <PHRASE> → <FILLER><PHRASE> | <START><END> <FILLER> → LIKE | UMM <START> → YOU KNOW | ε <END> → GAG ME WITH A SPOON | AS IF | WHATEVER | LOSER Sofya Raskhodnikova; based on slides by Nick Hopper
Formal Definition A CFGis a 4-tuple G = (V, Σ, R, S) Vis a finite set of variables Σ is a finite set of terminals (disjoint from V) R is set of production rules of the form A → W, where A V and W (VΣ)* S V is the start variable L(G) is the set of strings generated by G A language is context-free if it is generated by a some CFG. Sofya Raskhodnikova; based on slides by Nick Hopper
Formal Definition A CFGis a 4-tuple G = (V, Σ, R, S) Vis a finite set of variables Σ is a finite set of terminals (disjoint from V) R is set of production rules of the form A → W, where A V and W (VΣ)* S V is the start variable R = { S → 0S1, S → ε } Example: G = {{S}, {0,1}, R, S} L(G) = { 0n1n | n ≥ 0 } Sofya Raskhodnikova; based on slides by Nick Hopper
CFG terminology production rules start variable A → 0A1 A → B B → # variables terminals A 0A1 00A11 00B11 00#11 uVwyields uvw if (V → v) R. A derives 00#11 in 4 steps. Sofya Raskhodnikova; based on slides by Nick Hopper
Example GIVE A CFG FOR EVEN-LENGTH PALINDROMES S → S for all Σ S → ε Sofya Raskhodnikova; based on slides by Nick Hopper
Example GIVE A CFG FOR THE EMPTY SET G = { {S}, Σ, , S } Sofya Raskhodnikova; based on slides by Nick Hopper
GIVE A CFG FOR… L3 = { strings of balanced parens } L4 = { aibjck | i, j, k ≥ 0 and (i = j or j = k) } Sofya Raskhodnikova; based on slides by Nick Hopper
CFGs in the real world The syntactic grammar for the Java programming language BasicForStatement: for ( ; ; ) Statement for ( ; ; ForUpdate ) Statement for ( ; Expression ; ) Statement for ( ; Expression ; ForUpdate ) Statement for ( ForInit ; ; ) Statement for ( ForInit ; ; ForUpdate ) Statement for ( ForInit ; Expression ; ) Statement for ( ForInit ; Expression ; ForUpdate ) Statement Sofya Raskhodnikova; based on slides by Nick Hopper
COMPILER MODULES LEXER PARSER SEMANTIC ANALYZER TRANSLATOR/INTERPRETER Sofya Raskhodnikova; based on slides by Nick Hopper
Parse trees A A A B 0 0 # 1 1 A 0A1 00A11 00B11 00#11 Sofya Raskhodnikova; based on slides by Nick Hopper
string pop push PDAs: reminder ε,ε → $ 0,ε→ 0 1,0→ε ε,$ → ε 1,0→ε The language of P is the set of strings it accepts. PDAs are nondeterministic. Sofya Raskhodnikova; based on slides by Nick Hopper
Equivalence of CFGs & PDAs A language is generated by a CFG It is recognized by a PDA Sofya Raskhodnikova; based on slides by Nick Hopper
Converting a CFG to a PDA Suppose L is generated by a CFG G = (V, Σ, R, S). Construct a PDA P = (Q, Σ, Γ, , q, F) that recognizes L. Idea: P will guess steps of a derivation of its input w and use its stack to derive it. Sofya Raskhodnikova; based on slides by Nick Hopper
Algorithmic description of PDA (1) Place the marker symbol $ and the start variable on the stack. (2) Repeat forever: If a variable V is on top of the stack, and (V ! s) 2 R, pop V and push string s on the stack (b) If a terminal is on top of the stack, pop it and match it with input. in reverse order. (3) On (ε,$), accept. Sofya Raskhodnikova; based on slides by Nick Hopper
Designing states of PDA (qstart) Push S$ and go to qloop (qloop) Repeat the following steps forever: (a) On (ε,V) where (V ! s) 2 R, push s and go to qloop (b) On (,), pop and go to qloop (c) On (ε,$) go to qaccept Otherwise, the PDA will get stuck! Sofya Raskhodnikova; based on slides by Nick Hopper
Designing PDA ε,ε → S$ ε,A → w for rule A → w a,a → ε for terminal a ε,$ → ε Sofya Raskhodnikova; based on slides by Nick Hopper
S → aTb T → Ta | ε ε,ε → $ ε,ε → T ε,S → b ε,ε → T ε,ε → S ε,T → a ε,$ → ε ε,ε → a ε,T → ε a,a → ε b,b → ε Sofya Raskhodnikova; based on slides by Nick Hopper
A language is generated by a CFG It is recognized by a PDA Sofya Raskhodnikova; based on slides by Nick Hopper
Converting a PDA to a CFG Given PDA P = (Q, Σ, Γ, , q, F) Construct a CFG G = (V, Σ, R, S) with L(G)=L(P) First, simplify P so that: (1) It has a single accept state, qaccept (2) It empties the stack before accepting (3) Each transition either pushes a symbol or pops a symbol, but not both Sofya Raskhodnikova; based on slides by Nick Hopper
SIMPLIFY ε,ε → $ 0,ε→ 0 q1 q0 1,0→ε ε,ε → 0 ε,ε → ε ε,$ → ε q2 q3 1,0→ε ε,ε → 0 ε,ε → ε q4 ε,0 → ε q5 Sofya Raskhodnikova; based on slides by Nick Hopper
From PDA to CFG: main idea For each pair of states p and q in P, add a variable Apq to CFG that generates all strings that that can take P from p to q without changing the stack* V = {Apq | p,qQ } S = Aq0qaccept *Starting from any stack S in p, including empty stack, P has stack S at q. Sofya Raskhodnikova; based on slides by Nick Hopper
ε,ε → $ 0,ε→ 0 q1 q0 1,0→ε ε,ε → 0 ε,$ → ε q2 q3 1,0→ε ε,ε → 0 q4 ε,0 → ε q5 Example What strings does Aq0q1 generate? none What strings does Aq1q2 generate? {0n1n | n > 0} What strings does Aq1q3 generate? none Sofya Raskhodnikova; based on slides by Nick Hopper
From PDA to CFG: main idea Apq generates all strings that take P from p to q without changing the stack Let x be such a string • P’s first move on x must be a push • P’s last move on x must be a pop Consider the stack while reading x. Either: New portion of the stack first empties only at the end of x 2. New portion empties before the end of x Sofya Raskhodnikova; based on slides by Nick Hopper
New portion of the stack first empties only at the end of x stack height r s a b input string p q Apq→ aArsb Sofya Raskhodnikova; based on slides by Nick Hopper
2. New portion empties before the end of x stack height input string p r q Apq→ AprArq Sofya Raskhodnikova; based on slides by Nick Hopper
CFG construction V = {Apq | p,qQ } S = Aq0qaccept For each p,q,r,s Q, t Γ and a,b Σε If (r,t) (p,a,ε) and (q, ε) (s,b,t) Then add the rule Apq→ aArsb For each p,q,r Q, add the rule Apq→ AprArq For each p Q, add the rule App→ ε Sofya Raskhodnikova; based on slides by Nick Hopper
ε,ε → $ 0,ε→ 0 q1 q0 1,0→ε ε,ε → 0 ε,$ → ε q2 q3 1,0→ε ε,ε → 0 q4 ε,0 → ε q5 Aqq→ ε Apq→ AprArq Aq0q3 → εAq1q2ε Aq1q2 → 0Aq1q21 Aq1q2 → 0Aq1q11 none What strings does Aq0q1 generate? {0n1n | n > 0} What strings does Aq1q2 generate? What strings does Aq1q3 generate? none Sofya Raskhodnikova; based on slides by Nick Hopper
Equivalence of CFGs & PDAs A language is generated by a CFG It is recognized by a PDA Sofya Raskhodnikova; based on slides by Nick Hopper