Context Free Grammars Definition of a grammar G Deriving strings and defining L(G)

14
1 • Context Free Grammars – Definition of a grammar G – Deriving strings and defining L(G) • Context-Free Language definition

description

Context Free Grammars Definition of a grammar G Deriving strings and defining L(G) Context-Free Language definition. 1. Context-Free Grammars. Definition. 2. Definition. A context-free grammar G = (V, Σ, S, P) V: finite set of variables (nonterminals) - PowerPoint PPT Presentation

Transcript of Context Free Grammars Definition of a grammar G Deriving strings and defining L(G)

Page 1: Context Free Grammars Definition of a grammar G Deriving strings and defining L(G)

1

• Context Free Grammars– Definition of a grammar G– Deriving strings and defining L(G)

• Context-Free Language definition

Page 2: Context Free Grammars Definition of a grammar G Deriving strings and defining L(G)

2

Context-Free Grammars

Definition

Page 3: Context Free Grammars Definition of a grammar G Deriving strings and defining L(G)

3

Definition

• A context-free grammar G = (V, Σ, S, P)– V: finite set of variables (nonterminals)– Σ: finite set of characters (terminals)– S: start variable

• element of V• role is similar to that of q0 for an FSA or NFA

– P: finite set of grammar rules or production rules• Syntax of a production• variable → string of variables and terminals

Page 4: Context Free Grammars Definition of a grammar G Deriving strings and defining L(G)

4

English Context-Free Grammar

• ECFG = (V, Σ, S, P)– V = {<sentence>, <noun phrase>, <verb phrase>, ... }

• people sometimes use < > to delimit variables• In this course, we generally will use capital letters to denote

variables

– Σ = {a, b, c, ..., z, ;, ,, ., ...}– S = <sentence>– P = { <sentence> → <noun phrase> <verb phrase>,

<noun phrase> → <article> <adj> <noun>, ...}

Page 5: Context Free Grammars Definition of a grammar G Deriving strings and defining L(G)

5

{aibi | i>0} CFG

• ABG = (V, Σ, S, P)– V = {S}– Σ = {a, b}– S = S– P = {S → aSb, S → ab} or S → aSb | ab

• second format saves some space

Page 6: Context Free Grammars Definition of a grammar G Deriving strings and defining L(G)

6

Context-Free Grammars

Deriving strings, defining L(G), and defining context-free languages

Page 7: Context Free Grammars Definition of a grammar G Deriving strings and defining L(G)

7

Defining →, ==> notation• First: → notation

– This is used to define the productions of a grammar• S → aSb | ab

• Second: ==>G notation– This is used to denote the application of a production

rule from a grammar G• S ==>ABG aSb ==>ABG aaSbb ==>ABG aaabbb

– We say that string S derives string aSb (in one step)– We say that string aSb derives string aaSbb (in one step)– We say that string aaSbb derives string aaabbb (in one step)

• We often omit the grammar subscript when the intended grammar is unambiguous

Page 8: Context Free Grammars Definition of a grammar G Deriving strings and defining L(G)

8

Defining ==> continued

• Third: ==>kG notation

– This is used to denote k applications of production rules from a grammar G

• S ==>2ABG aaSbb

– We say that string S derives string aaSbb in two steps

• aSb ==>2ABG aaabbb

– We say that string aSb derives string aaabbb in two steps• We often omit the grammar subscript when the intended

grammar is unambiguous

Page 9: Context Free Grammars Definition of a grammar G Deriving strings and defining L(G)

9

• Fourth: ==>*G notation

– This is used to denote 0 or more applications of production rules from a grammar G

• S ==>*ABG S

– We say that string S derives string S in 0 or more steps• S ==>*

ABG aaSbb– We say that string S derives string aaSbb in 0 or more steps

• aSb ==>*ABG aaSbb

– We say that string aSb derives string aaSbb in 0 or more steps• aSb ==>*

ABG aaabbb– We say that string aSb derives string aaabbb in 0 or more steps

• We often omit the grammar subscript when the intended grammar is unambiguous

Defining ==> continued

Page 10: Context Free Grammars Definition of a grammar G Deriving strings and defining L(G)

10

• Derivation of a string x– The complete step by step derivation of a string x from

the start variable S– Key fact: each step in a derivation makes only one

application of a production rule from G– Example: Derivation of string aaabbb using ABG

• S ==>ABG aSb ==>ABG aaSbb ==>ABG aaabbb

– Example 2: AG= (V, , S, P) where P = S →SS | a• Deriving string aaa• S ==> SS ==> Sa ==> SSa ==> aSa ==> aaa

Defining derivations *

Page 11: Context Free Grammars Definition of a grammar G Deriving strings and defining L(G)

11

• Generating strings– If S ==>G

* x, then grammar G generates string x• Note G generates strings which contain terminals and

nonterminals– aSb contains nonterminals and terminals– S contains only nonterminals– aaabbb contains only terminals

• L(G)– The set of strings over generated by grammar G

• Note we only consider terminal strings generated by G

– {aibi | i > 0} = L(ABG)– {ai | i > 0} = L(AG)

Defining L(G) *

Page 12: Context Free Grammars Definition of a grammar G Deriving strings and defining L(G)

12

• Context-Free Languages– A language L is a context-free language (CFL) iff

• Results so far– {ai | i > 0} is a CFL

• One CFG G such that L(G) = this language is AG• Note this language is also regular

– {aibi | i > 0} is a CFL• One CFG G such that L(G) = this language is ABG• Note this language is NOT regular

Context-Free Languages *

Page 13: Context Free Grammars Definition of a grammar G Deriving strings and defining L(G)

13

Example

• Let BAL = the set of strings over {(,)} in which the parentheses are balanced

• Prove that BAL is a CFL– To prove this, you need to come up with a CFG BALG

such that L(BALG) = BAL• BALG = (V, Σ, S, P)

– V = {S}– Σ = {(, )}– S = S– P = ?

• Give derivations of ((( ))) and ( )(( )) with your grammar

Page 14: Context Free Grammars Definition of a grammar G Deriving strings and defining L(G)

Implications

• Given that the language of balanced parentheses is a CFL, what implications does this have for compiler design?– What programming language structures can be

captured by CFG?

14