4/3/2018 Your Questions? • Previous class days' Your material (and exercises) parents MA/CSSE 474 • Reading Assignments will Theory of Computation • HW 9 problems probably • Exam 2 concur!… • Anything else Intro to Context-free Grammars 1
4/3/2018 Context-free Grammars, Languages, Shorthand notation and PDAs S S a T Context-free L S b T Language T a T b Context-free T a S Accepts Grammar T b S Can be abbreviated by S | a T | b T T a | b | a S | b S PDA 2
4/3/2018 Context-free Grammar Formal Definition Formal Definitions: Derivations, Context-free Languages A CFG G=(V, , R, S) (Each part is finite) x G y iff x = A is the terminal alphabet ; it contains the set of symbols that make up the strings in L ( G ), and and A is in R N (our textbook does not use this name, but I will) is the y = nonterminal alphabet : a set of working symbols that G w 0 G w 1 G w 2 G . . . G w n is a derivation in G . uses to structure the language. These symbols disappear by the time the grammar finishes its job and Let G * be the reflexive, transitive closure of G . ∩ N = . generates a string. Note: Then the language generated by G , denoted L ( G ), is: Rule alphabet (vocabulary): V = ∪ N { w * : S G * w }. • R : A finite set of productions of the form A β , where A language L is context-free if there is some A ∊ N and β ∊ V* Rules are also known as productions . context-free grammar G such that L = L ( G ) . G has a unique start symbol , S ∊ N 3
4/3/2018 Regular Grammars In a regular grammar, every rule (production) in R Regular Grammars must have a right-hand side that is: ● , or ● a single terminal, or ● a single terminal followed by a single nonterminal. Regular: S a , S , and T a S Not regular: S a S a and S T A brief side-trip into Chapter 7 4
4/3/2018 Regular Languages and Regular Grammars Regular Grammar Example L = { w { a , b }* : | w | is even} (( aa ) ( ab ) ( ba ) ( bb ))* Theorem: A language is regular iff it can be defined by a regular grammar. S Proof: By two constructions. S a T Derive abbb S b T from this T a grammar T b T a S T b S 5
4/3/2018 Regular Languages and Regular Grammars Recursive Grammar Rules Regular grammar FSM: grammartofsm ( G = ( V , , R , S)) = • A rule is recursive iff it is X w 1 Yw 2 , where: 1. Create in M a separate state for each nonterminal in V . Y * w 3 Xw 4 for some w 1 , w 2 , w 3 , and w 4 in V *. 2. Start state is the state corresponding to S . 3. If there are any rules in R of the form X a , for some • A grammar G is recursive iff G contains at least one a , create a new state labeled #. recursive rule. 4. For each rule of the form X a Y , add a transition from X to Y labeled a . S ( S ) S ( T ) • Examples: 5. For each rule of the form X a , add a transition from X T ( S ) to # labeled a . 6. For each rule of the form X , mark state X as accepting. S bS, S aT In general, non-recursive 7. Mark state # as accepting. T aS, T b, T ε grammars are boring! FSM Regular grammar: Similar. Essentially reverses this procedure. 6
4/3/2018 Self-Embedding Grammar Rules • A rule in a grammar G is self-embedding iff it is : Where Context-Free Grammars X w 1 Yw 2 , where Y * w 3 Xw 4 and What is the Get Their Power difference between both w 1 w 3 and w 2 w 4 are in + . self-embedding and recursive ? • If a CFG G is not self-embedding then L ( G ) is regular. • A grammar is self-embedding iff it contains at least one self-embedding rule. • If a language L has the property • Examples: S a S a self-embedding that every grammar that defines it is self-embedding, then L is not S a S recursive but not self-embedding regular. S a T T S b self-embedding 7
4/3/2018 Derivation Tree Structure • Consider our grammar for Bal: Context free languages: S (S) | ε | SS We care about structure. E • Draw a derivation tree (a.k.a. Parse tree) E + E for the string (())(()()) E * E id 3 id id 5 7 8
4/3/2018 Hints for designing context- L = {a n b n c m : n , m 0} free grammars • Generate concatenated regions: L = { : k 0 ∧ i ≤ k (n i 0)} n n n n n n a b a b ... a b 1 1 2 2 k k A BC L = { a n b m : n m } • Generate outside in: A aAb L = { w { a , b }*: # a ( w ) = # b ( w )} • Union of two sets: A B | C 9
4/3/2018 BNF CFG for Simple Arithmetic Expressions G = ( V , , R , E ), where A notation for writing practical context-free grammars V = {+, *, (, ), id , E }, = {+, *, (, ), id }, • The symbol | should be read as “or”. R = { E E + E Example: S a S b | b S a | SS | E E E E ( E ) • Allow a nonterminal symbol to be any sequence E id of characters surrounded by angle brackets. } Examples of nonterminals: <program> Derive id + id * id <variable> 10
4/3/2018 Spam Generation BNF for a Java Fragment <block> ::= {<stmt-list>} | {} <stmt-list> ::= <stmt> | <stmt-list> <stmt> <stmt> ::= <block> | while (<cond>) <stmt> | if (<cond>) <stmt> | do <stmt> while (<cond>); | <assignment-stmt>; | These production rules yield 1,843,200 possible spellings. return | How Many Ways Can You Spell V1@gra? By Brian Hayes return <expression> | American Scientist , July-August 2007 <method-invocation>; http://www.americanscientist.org/template/AssetDetail/assetid/55592 11
4/3/2018 HTML English S NP VP NP the Nominal | a Nominal | Nominal | <ul> <li> Item 1, which will include a sublist </li> ProperNoun | NP PP <ul> Nominal N | Adjs N <li> First item in sublist </li> <li> Second item in sublist </li> N cat | dogs | bear | girl | chocolate | rifle </ul> ProperNoun Chris | Fluffy <li> Item 2 </li> </ul> Adjs Adj Adjs | Adj A grammar: Adj young | older | smart /* Text is a sequence of elements. VP V | V NP | VP PP HTMLtext Element HTMLtext | V like | likes | thinks | shoots | smells Element UL | LI | … (and other kinds of elements that are allowed in the body of an HTML document) PP Prep NP /* The <ul> and </ul> tags must match. Prep with UL <ul> HTMLtext </ul> /* The <li> and </li> tags must match. LI <li> HTMLtext </li> 12
4/3/2018 Prove the Correctness of a Grammar A n B n = { a n b n : n 0} G = ({ S , a , b }, { a , b }, R , S ), R = { S a S b S } ● Prove that G generates only strings in L. ● Prove that G generates all the strings in L . 13
Recommend
More recommend