Download presentation
Presentation is loading. Please wait.
1
1 Module 28 Context Free Grammars –Definition of a grammar G –Deriving strings and defining L(G) Context-Free Language definition
2
2 Context-Free Grammars Definition
3
3 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 q 0 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
4 English Context-Free Grammar ECFG = (V, , S, P) –V = {,,,... } people sometimes use to delimit variables In this course, we generally will use capital letters to denote variables – = {a, b, c,..., z, ;,,,.,...} –S = –P = { -->, -->,...}
5
5 {a i b i | 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
6 Context-Free Grammars Deriving strings, defining L(G), and defining context-free languages
7
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
8 Defining ==> continued Third: ==> k G notation –This is used to denote k applications of production rules from a grammar G S ==> 2 ABG aaSbb –We say that string S derives string aaSbb in two steps aSb ==> 2 ABG 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
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
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
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 –{a i b i | i > 0} = L(ABG) –{a i | i > 0} = L(AG) Defining L(G) *
12
12 Context-Free Languages –A language L is a context-free language (CFL) iff Results so far –{a i | i > 0} is a CFL One CFG G such that L(G) = this language is AG Note this language is also regular –{a i b i | 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
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.