140 likes | 267 Views
CSCI 2670 Introduction to Theory of Computing. September 14, 2005. Agenda. Yesterday Pumping lemma Today Introduce context-free grammars Formally define CFG’s Begin designing CFG’s Tomorrow More on designing CFG’s Chomsky normal form. Announcement. Quiz tomorrow Regular expressions
E N D
CSCI 2670Introduction to Theory of Computing September 14, 2005
Agenda • Yesterday • Pumping lemma • Today • Introduce context-free grammars • Formally define CFG’s • Begin designing CFG’s • Tomorrow • More on designing CFG’s • Chomsky normal form
Announcement • Quiz tomorrow • Regular expressions • Pumping lemma
Context-free grammars • The shortcoming of finite automata is that each state has very limited meaning • You have no memory of where you’ve been – only knowledge of where you are • Context-free grammars are a more powerful method of describing languages • Example: {0n1n | n 0} is a CFG
Example CFG • Context-free grammars use substitution to maintain knowledge S (S) S SS S () • All possible legal parenthesis pairings can be expressed by consecutive applications of these rules • Is this a regular language?
Example S (S) | SS | () • (()())(()) • S SS (S)(S) (SS)(()) (()())(()) • This sequence of substitutions is called a derivation
S S S S S S ( () () ) ( () ) Parse tree S (S) | SS | () S
Example 2 S Sb | Bb B aBb | aCb C ε • Derivation for aaabbbbb SSb Bbb aaBbbbb aaaεbbbbb aBbbb aaaCbbbbb
S B B B C a a a ε b b b b b Example 2 parse tree S
Example 2 S Sb | Bb B aBb | aCb C ε Question 1: What language does this grammar accept? Answer: {anbm | m > n > 0} Question 2: Can this CFG be simplified? Answer: yes. Replace BaCb with Bab and remove Cε
Context-free grammar definition • A context-free grammar is a 4-tuple (V,,R,S), where • V is a finite set called the variables, • is a finite set, disjoint from V, called the terminals, • R is a finite set of rules, with each rule being a variable and a string of variables and terminals, and • S V is the start variable.
More definitions • If u, v, and w are strings of variables and terminals, and A w is a rule of the grammar, we say uAv yields uwv • Denoted uAv uwv
More definitions • If a sequence of rules leads from u to v – i.e., u u1 u2 … v, we denote this u * v • (I can’t do the actual notation in powerpoint – the * should be over the double bars) • The language of the grammar is {w * | s * w}