160 likes | 244 Views
Lecture 4 Context-free grammars. Jan Maluszynski , IDA, 200 7 http://www.ida.liu.se/~janma janma @ ida.liu.se. Outline. (Sipser 2.1 – 2.3) Motivating example CFG Definition Parse trees, ambiguity Push-down automata Equivalence CFG – PDA Pumping lemma for CFG. Motivating example.
E N D
Lecture 4Context-free grammars Jan Maluszynski, IDA, 2007 http://www.ida.liu.se/~janma janma @ ida.liu.se Jan Maluszynski - HT 2007
Outline (Sipser 2.1 – 2.3) • Motivating example • CFG Definition • Parse trees, ambiguity • Push-down automata • Equivalence CFG – PDA • Pumping lemma for CFG Jan Maluszynski - HT 2007
Motivating example A (A) A Gramatical rules used for rewriting: A (A) () A (A) ((A)) (((A))) ((())) L(A) : all terminal strings derivable L(A) is not regular! Jan Maluszynski - HT 2007
Context Free Grammars A CFG : (V, , R, S) • V a finite set of nonterminals (variables) • a finite set of terminals, disjoint with V • R a finite set of rules of the form X w where XV and w (V+ )* • SV is a start nonterminal Jan Maluszynski - HT 2007
Context-Free Languages A CFG G: (V, , R, S) L(G) denotes the language of G: the set of all terminal strings derivable in G from S A language is a context-free language iff it is the language of a CFG Jan Maluszynski - HT 2007
Ambiguity E E+E E E#E E (E) E a Jan Maluszynski - HT 2007
Chomsky Normal Form G is in CNF if every rule is of the form A BC or A a In addition, there may be the rule S Where S is the start nonterminal Every CFL is generated by a CNF grammar. An application: the CYK parsing algorithm Jan Maluszynski - HT 2007
Cocke-Younger- Kasami parsing G CNF grammar w string w = s1 s2 …..sn CYK checks if w is in L(G) by constructing a table T[i,j], 1i,j|w| where: T[i,j] = { X | X => si si+1 …..si+j} Thus w is in L(G) iff S is in T[1,|w|] Jan Maluszynski - HT 2007
CYK table Construct T[i,1] for i = 1,…, |w| X is in T[i,1] iff X si Having T[i,j] and T[i+j,k] construct T[i,j+k]: Y is in T[i,j+k] iff for some X in T[i,j] , Z in T[i+j,k] Y X Z Jan Maluszynski - HT 2007
CYK (transposed) table example S AB | BC A BA | a B CC | b C AB | a b a a b a i = 1 2 3 4 5 substrings: 1 B A,C A,C B A,C length 1 2 S,A B S,C S,A length 2 3 - B B length 3 4 - S,A,C length 4 5 S,A,C length 5 e.g. BT[2,3] since BCC, CT[2,1] CT[2+1,2] Jan Maluszynski - HT 2007
Pushdown Automaton FA extended with a stack Top stack symbol is an argument of a transition can be accessed and replaced by a new one Jan Maluszynski - HT 2007
(Nondeterministic) Pushdown Automaton (Q, , , , q0 ,F) Q states Input alphabet • Stack alphabet • : (Q ({}) ({})) P(Q ({}) q0Q initial state FQ final states Jan Maluszynski - HT 2007
PDA vs. CFG’s Theorem: A language is context-free iff it is recognized by a pushdown automaton. (p.117) CFG PDA : Idea: simulate derivations on the stack (see example) PDA CFG Idea: Nonterminals Xpq derive all strings that bring PDA from p to q starting and ending with empty stack (details see pp121-124). Jan Maluszynski - HT 2007
Regular Languages are Context-free Every Regular Language is Context-free: FA is a special case of PDA Regular grammar: Each rule of the form: A aB, A a or A A CF language L is regular iff there exists a regular CFG G such that L = L(G). Jan Maluszynski - HT 2007
Pumping lemma for CFL a +a# a a+…a+a# a…# a Jan Maluszynski - HT 2007
Pumping Lemma for CFL For any CFL L there is p such that If s L and |s| p then s=uvxyz for some u,v,x,y,z satisfying: • For each i 0 uvixyiz L • |vy|>0 • |vxy| p Used for proving that a language is not a CFL Jan Maluszynski - HT 2007