Context-Free Grammars
description
Transcript of Context-Free Grammars
![Page 1: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/1.jpg)
2301373 Chapter 3 Context-free Grammar
1
- Context Free Grammars
Using grammars in parsers
![Page 2: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/2.jpg)
2301373 Chapter 3 Context-free Grammar 2
Outline Parsing Process Grammars
- Context free grammar - Backus Naur Form (BNF)
Parse Tree and Abstract Syntax Tree Ambiguous Grammar - Extended Backus Naur Form (EBNF)
![Page 3: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/3.jpg)
2301373 Chapter 3 Context-free Grammar 3
Parsing Process Call the scanner to get tokens Build a parse tree from the stream of to
kens A parse tree shows the syntactic structure
of the source program. Add information about identifiers in the
symbol table Report error, when found, and recover f
rom thee error
![Page 4: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/4.jpg)
2301373 Chapter 3 Context-free Grammar 4
Grammar a quintuple ( V, T, P, S ) where
V is a finite set of nonterminals, containing S, T is a finite set of terminals, P is a set of production rules in the form of β wh
ere and β are strings over V U T , and S is the start symbol.
Example G= ({S, A, B, C}, {a, b, c}, P, S)
P= { SSABC, BA AB, CB BC, CA AC, SA a, aA aa, aB ab, bB bb, bC bc, cC cc}
![Page 5: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/5.jpg)
2301373 Chapter 3 Context-free Grammar 5
- Context Free Grammar a quintuple ( V, T, P, S ) where
V is a finite set of nonterminals, containingS,
T is a finite set of terminals, P is a set of production rules in the form of
β where is in V and β is in (V U T )*, and S is the start symbol.
Any string in (V U T)* is called a sententi al form.
![Page 6: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/6.jpg)
2301373 Chapter 3 Context-free Grammar 6
Examples
E E O E E (E) E id O + O - O * O /
S SS S (S)S S () S
![Page 7: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/7.jpg)
2301373 Chapter 3 Context-free Grammar 7
- Backus Naur Form (BNF) Nonterminals are in < >. Terminals are any other symbols. ::= means . | means or. Examples:
<E> ::= <E><O><E>| (<E>) | ID <O> ::= - + | | * | /
<S> ::= <S><S> | (<S>)<S> | () |
![Page 8: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/8.jpg)
2301373 Chapter 3 Context-free Grammar 8
Derivation A sequence of replacement of a substri
ng in a sentential form.Definition Let G = (V , T , P , S ) be a CFG, , , be
strings in (V U T)* and A is in V.A G if A is in P.
*G denotes a derivation in zero step ormore.
![Page 9: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/9.jpg)
2301373 Chapter 3 Context-free Grammar 9
Examples S SS | (S)S | () | S
SS (S)SS (S)S(S)S (S)S(())S ((S)S)S(())S ((S)())S(())S ((())())S(())S ((())()) (())S ((())())(())
E E O E | (E) | id O - + | | * | / E
E O E (E) O E (E O E) O E* ((E O E) O E) O E ((id O E)) O E) O E ((id + E)) O E) O E ((id + id)) O E) O E * ((id + id)) * id) + id
![Page 10: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/10.jpg)
2301373 Chapter 3 Context-free Grammar 10
Leftmost Derivation Rightmost Derivation
Each step of the derivati
on is a replacement of t
he leftmost nonterminal
s in a sentential form.
E E O E (E ) O E (E O E) O E (id O E) O E (id + E ) O E (id + id) O E (id + id) * E (id + id) * id
Each step of the derivati
on is a replacement of t
he rightmost nontermin
als in a sentential form.
E E O E E O id E * id (E )* i d (E O E ) * id (E O id) * id (E *+id) i d (id + id) * id
![Page 11: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/11.jpg)
2301373 Chapter 3 Context-free Grammar 11
Language Derived from Grammar Let G = (V , T , P , S ) be a CFG. A string w in T * is derived from G if S *
Gw. A language generated by G , denoted by
L(G ), is a set of strings derived from G. L(G) = {w| S *
Gw}.
![Page 12: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/12.jpg)
2301373 Chapter 3 Context-free Grammar 12
Right/Left Recursive A grammar is a left r
ecursive if its produc tion rules can gener
ate a derivation of th e form A * A X.
Examples: E E O id | (E) | id E F + id | (E) | id
F E * id | id E F+i d
E * id + id
A grammar is a rightrecursive if its produ
ction rules can gener ate a derivation of th
e form A * X A. Examples:
E id O E | (E) | id E id + F | (E) | id
F id * E | id E id + F
id + id * E
![Page 13: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/13.jpg)
2301373 Chapter 3 Context-free Grammar 13
Parse Tree A labeled tree in which
the interior nodes are labeled by nonterminals
leaf nodes are labeled by terminals the children of an interior node represent a
replacement of the associated nonterminal in a derivation
corresponding to a derivationE
+id
E
F
*id i
d
![Page 14: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/14.jpg)
2301373 Chapter 3 Context-free Grammar 14
Parse Trees and Derivations
E E + E 1( ) id + E (2) id + E * E (3) id + id * E (4) id + id * id (5)
E E + E 1( ) E + E * E 2( ) E + E * id 3( ) E + id * id 4( ) id + id * id (5)
Preorder numbering
Reverse of postorder numbering
+
E 1
E 2
E 5
E 3
* E4
id
id
id
+
E 1
E 5
E 3
E 2
* E4
id
id
id
![Page 15: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/15.jpg)
2301373 Chapter 3 Context-free Grammar 15
Grammar: Example
List of parameters in: Function definition
function sub(a,b,c) Function call
sub(a,1,2)
<Fdef> function id ( <argList> )<argList> id , <arglist> | id<Fcall> id ( <parList> )<parList> <par> ,<parlist>| <par><par> id | const
<Fdef> function id ( <argList> )<argList> <arglist> , id | id<Fcall> id ( <parList> )<parList> <parlist> ,<par>| <par><par> id | const
<argList> id , <arglist> id, id , <arglist> … (id ,)* id<argList> <arglist> , id<arglist> , id, id … id (, id )*
![Page 16: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/16.jpg)
2301373 Chapter 3 Context-free Grammar 16
Grammar: Example
List of parameters If zero parameter is
allowed, then ?
<Fdef> function id ( <argList> )| function id ( )
<argList> id , <arglist> | id<Fcall> id ( <parList> ) | id ( )
<parList> <par> ,<parlist>| <par><par> id | const
<Fdef> function id ( <argList> )<argList> id , <arglist> | id | <Fcall> id ( <parList> )<parList> <par> ,<parlist>| <par><par> id | const
Work ?
NO! Generateid , id , id ,
![Page 17: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/17.jpg)
2301373 Chapter 3 Context-free Grammar 17
Grammar: Example
List of parameters If zero parameter is
allowed, then ?
<Fdef> function id ( <argList> )| function id ( )
<argList> id , <arglist> | id<Fcall> id ( <parList> ) | id ( )
<parList> <par> ,<parlist>| <par><par> id | const
<Fdef> function id ( <argList> )<argList> id , <arglist> | id | <Fcall> id ( <parList> )<parList> <par> ,<parlist>| <par><par> id | const
Work ?
NO! Generateid , id , id ,
![Page 18: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/18.jpg)
2301373 Chapter 3 Context-free Grammar 18
Grammar: ExampleList of statements: No statement One statement:
s; More than one
statement: s; s; s;
A statement can be a block of statements. {s; s; s;}
Is the following correct?{ {s; {s; s;} s; {}} s; }
<St> ::= | s; | s; <St> | { <St> } <St><St> { <St> } <St> { <St> } { { <St> } <St>} { { <St> } s; <St>} { { <St> } s; } { { s; <St> } s;} { { s; { <St> } <St> } s;} { { s; { <St> } s; <St> } s;} { { s; { <St> } s; { <St> } <St> } s;} { { s; { <St> } s; { <St> } } s;} { { s; { <St> } s; {} } s;} { { s; { s; <St> } s; {} } s;} { { s; { s; s;} s; {} } s;}
![Page 19: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/19.jpg)
2301373 Chapter 3 Context-free Grammar 19
Abstract Syntax Tree Representation of actual source tokens Interior nodes represent operators. Leaf nodes represent operands.
![Page 20: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/20.jpg)
2301373 Chapter 3 Context-free Grammar 20
Abstract Syntax Tree for Expression
+ E
E
E
E
*E
id3
id2
id1
+
id1
id3
*
id2
![Page 21: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/21.jpg)
2301373 Chapter 3 Context-free Grammar 21
Abstract Syntax Tree for If Statement
st
ifStatement
)exp
true
(if
else st
st elsePart
return
if
true
st return
![Page 22: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/22.jpg)
2301373 Chapter 3 Context-free Grammar 22
Ambiguous Grammar A grammar is ambiguous if it can gener
ate two different parse trees for one string.
Ambiguous grammars can cause incons istency in parsing.
![Page 23: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/23.jpg)
2301373 Chapter 3 Context-free Grammar 23
Example: Ambiguous Grammar E E + E E - E E E E * E E E / E E i d
+
E
E
E
E
*
E
id3
id2
id1
*
E
E
id2
E
E
+E
id1
id3
![Page 24: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/24.jpg)
2301373 Chapter 3 Context-free Grammar 24
Ambiguity in Expressions Which operation is to be done first?
solved by precedence An operator with higher precedence is done bef
ore one with lower precedence. An operator with higher precedence is placed in
a rule (logically) further from the start symbol. solved by associativity
- -If an operator is right associative (or left associa tive), an operand in between2 operators is asso ciated to the operator to the right (left).
- Right associated : W + ( X+(Y+Z)) ++++-++++++++++ + +++ + ++ + ++ + +
![Page 25: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/25.jpg)
2301373 Chapter 3 Context-free Grammar 25
Precedence E E + E E - E E E E * E E E / E E id E E + E E - E E E F F F * F
F F / FF id
+
E
E
E
E
*
E
id3
id2
id1
*
E
E
id2
E
E
+E
id1
id3
E
+ E E
*F
id3
id2
id1
F
F F
![Page 26: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/26.jpg)
2301373 Chapter 3 Context-free Grammar 26
Precedence (cont’d)
E - E + E | E E | F F F * F | F / F | X X ( E ) | id
(id1 + id2) * id3* id4
* F
X
F
+Eid4
id3
E
X
E X
E
F
) (
*F F
id1
X
F
id2
X
F
![Page 27: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/27.jpg)
2301373 Chapter 3 Context-free Grammar 27
Associativity - Left associative operato
rs E - E + F | E F | F F F * X | F / X | X X ( E ) | id
(id1 + id2) * id3 / id4 = (( (id1 + id2) * id3) / id4)
/ F X
+E
id3 X
E
E
F
) (
*F X
id1
X
F
id4
X
F
id2
![Page 28: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/28.jpg)
2301373 Chapter 3 Context-free Grammar 28
Ambiguity in Dangling Else
St IfSt | ... IfSt if ( E ) St | if ( E ) St else St
E 0 | 1 | …
IfSt
)if ( elseE StSt
IfSt
)if ( E St
0
1
0 IfSt
)if ( elseE StSt
IfSt
)if ( E St
1
{ if (0)
ii ii i ii i 1
ii i} { if (0)
1{ if ( ) St else St } }
![Page 29: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/29.jpg)
2301373 Chapter 3 Context-free Grammar 29
Disambiguating Rules for Dangling El se
St MatchedSt | UnmatchedSt
UnmatchedSt if (E) St | if (E) MatchedSt else Unmatched
St MatchedSt
if (E) MatchedSt else MatchedSt| ...
E 0 | 1
if (0) if (1) St else St= if (0)
if (1) St else St
UnmatchedSt
)if ( E
MatchedSt
)if ( elseE MatchedStMatchedSt
St
St
![Page 30: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/30.jpg)
2301373 Chapter 3 Context-free Grammar 30
- Extended Backus Naur Form (EBNF) Kleene’s Star/ Kleene’s Closure
Seq ::= St {; St} Seq ::= {St ;} St
Optional Part IfSt ::= if ( E ) St [else St] - E ::= F [+ E ] | F [ E]
![Page 31: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/31.jpg)
2301373 Chapter 3 Context-free Grammar 31
Syntax Diagrams Graphical representation of EBNF rules
nonterminals: terminals: sequences and choices:
Examples X ::= ( E) | id
Seq ::= {St ;} St
E ::= F [+ E ]
IfSt
id
( )E
id
St
St;
F + E
![Page 32: Context-Free Grammars](https://reader033.fdocuments.in/reader033/viewer/2022061614/56813a44550346895da232cb/html5/thumbnails/32.jpg)
2301373 Chapter 3 Context-free Grammar 32
Reading Assignment Louden, Compiler construction
Chapter 3