Context Free Grammars Definition of a grammar G Deriving strings and defining L(G)
description
Transcript of 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
2
Context-Free Grammars
Definition
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
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>, ...}
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
6
Context-Free Grammars
Deriving strings, defining L(G), and defining context-free languages
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
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
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
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 *
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) *
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 *
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
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