• Tidak ada hasil yang ditemukan

PPT Context-Free Grammars

N/A
N/A
Protected

Academic year: 2025

Membagikan "PPT Context-Free Grammars"

Copied!
32
0
0

Teks penuh

(1)

2301373

Chapter 3 Context-free

Grammar 1

Context-Free Grammars

Using grammars in parsers

Jaruloj Chongstitvatana

Department of Mathametics and Computer Science Chulalongkorn University

(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)

(3)

2301373 Chapter 3 Context-free Grammar 3

Parsing Process

Call the scanner to get tokens

Build a parse tree from the stream of t okens

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

from thee error

(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 β w here and β are strings over V UT , and

S is the start symbol.

Example

G= ({S, A, B, C}, {a, b, c}, P, S)

P= { SSABC, BA  AB, CB  BC, CA  AC, SA  a, aA  aa, aB  ab, bB  bb, bC  bc, cC  cc}

(5)

2301373 Chapter 3 Context-free Grammar 5

Context-Free 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

β where is in V and β is in (V UT )*, and

S is the start symbol.

Any string in (V U T)* is called a sentential form.

(6)

Examples

E  E O E E  (E)

E  id O  + O  - O  * O  /

S  SS S  (S)S S  ()

S  

(7)

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> | () |

(8)

Derivation

A sequence of replacement of a substri ng in a sentential form.

Definition

Let G = (V, T, P, S ) be a CFG,  ,  ,  b e strings in (V U T)

*

and A is in V.

 A  

G

 if A   is in P.

*G

denotes a derivation in zero step or

more.

(9)

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) + i d

(10)

Leftmost Derivation Rightmost Derivation

Each step of the derivat ion is a replacement of the leftmost nontermin als 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 derivat ion is a replacement of the rightmost nontermi nals in a sentential for m.

E E O E

E O id

E * id

(E) * id

(E O E) * id

(E O id) * id

(E + id) * id

(id + id) * id

(11)

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

*

G

w.

A language generated by G, denoted b y L(G), is a set of strings derived from G.

L(G) = {w| S *Gw}.

(12)

Right/Left Recursive

A grammar is a left re cursive if its productio n rules can generate a derivation of the for m A * A X.

Examples:

E E O id | (E) | id

E F + id | (E) | id F E * id | id

E F + id

E * id + id

A grammar is a right r ecursive if its producti on rules can generate a derivation of the for m 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

(13)

2301373 Chapter 3 Context-free Grammar 13

Parse Tree

A labeled tree in which

the interior nodes are labeled by nontermi nals

leaf nodes are labeled by terminals

the children of an interior node represent a replacement of the associated nontermi nal in a derivation

corresponding to a derivationE

id +

E F

i *

d i

d

(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 numberi ng

Reverse of postorder numbering +

E 1 E 2

E 5 E 3

E 4 *

i d i

d i

d

+ E 1 E 5

E 3 E 2

E 4 *

i d i

d i

d

(15)

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 )*

(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!

Generate id , id , id ,

(17)

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!

Generate id , id , id ,

(18)

Grammar: Example

List 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;}

(19)

2301373 Chapter 3 Context-free Grammar 19

Abstract Syntax Tree

Representation of actual source tokens

Interior nodes represent operators.

Leaf nodes represent operands.

(20)

Abstract Syntax Tree for Expression

+ E E

E E

E *

id 3 id

2 id

1

+ id1

id3

* id

2

(21)

2301373 Chapter 3 Context-free Grammar 21

Abstract Syntax Tree for If Statement

st

ifStatement

) ex

p tru e if (

else st st elsePar

t

return

if

tru e

st return

(22)

Ambiguous Grammar

A grammar is ambiguous if it can gene rate two different parse trees for one st ring.

Ambiguous grammars can cause incon

sistency in parsing.

(23)

2301373 Chapter 3 Context-free Grammar 23

Example: Ambiguous Grammar

E E + E E E - E E E * E E E / E E id

+ E E

E E

E *

id3 id

2 id1

* E

E

id2 E E

E + id 1

id3

(24)

Ambiguity in Expressions

Which operation is to be done first?

solved by precedence

An operator with higher precedence is done before one with lower precedence.

An operator with higher precedence is placed in a r ule (logically) further from the start symbol.

solved by associativity

If an operator is right-associative (or left-associativ e), an operand in between 2 operators is associated to the operator to the right (left).

Right-associated : W + (X + (Y + Z))

Left-associated : ((W + X) + Y) + Z

(25)

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 / F F  id

+ E E

E E

E *

id3 id

2 id1

* E

E

id2 E E

E + id 1

id3

E

E + E

* F

id 3 id

2 id

1

F

F F

(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

+

E id

id 4 E 3

X

E X

E F

) (

*

F F

id X F

id X F

(27)

2301373 Chapter 3 Context-free Grammar 27

Associativity

Left-associative operat ors

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 +

X id3 E

E F

) (

F * X

id1 X F

id4

X F

id2

(28)

Ambiguity in Dangling Else

St  IfSt | ...

IfSt  if ( E ) St | if ( E ) St else St E  0 | 1 | …

IfSt )

if ( E St else St IfSt

)

if ( E St

0

1

0 IfSt

)

if ( E St else St IfSt

)

if ( E St

1

{ if (0)

{ if (1) St } else St }

{ if (0)

{ if (1) St else St } }

(29)

2301373 Chapter 3 Context-free Grammar 29

Disambiguating Rules for Dangling E

St

lse

MatchedSt | UnmatchedSt UnmatchedSt

if (E) St |

if (E) MatchedSt else UnmatchedS t

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 ( E MatchedStelseMatchedSt St

S t

(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]

(31)

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

(32)

Reading Assignment

Louden, Compiler construction

Chapter 3

Referensi

Dokumen terkait

Model terdiri dari 3 buah langkah yaitu Notasi CNF dan string input, yang berupa grammar (context free grammar) yang sudah dalam bentuk CNF serta string input yang

Model terdiri dari 3 buah langkah yaitu Notasi CNF dan string input, yang berupa grammar (context free grammar) yang sudah dalam bentuk CNF serta string input yang

Model terdiri dari 3 buah langkah yaitu Notasi CNF dan string input, yang berupa grammar (context free grammar) yang sudah dalam bentuk CNF serta string input yang dapat

Department of Mathematics & Computer Science Chulalongkorn University First Semester 2018 2301216 Linear Algebra and Differential Equations ISE Example of Final Examination 1.. Find a

Department of Mathematics and Computer Science, Faculty of Science, Chulalongkorn University, Bangkok, Thailand Email:[email protected] Importance sampling is a useful Monte Carlo

Department of Mathematics and Computer Science, Faculty of Science, Chulalongkorn University, Bangkok, Thailand Email:[email protected] A graph is a collection of vertices and

YOTSANAN MEEMARK, Group of units of a finite commutative ring Department of Mathematics and Computer Science, Faculty of Science, Chulalongkorn University, Bangkok, Thailand

1.教育・研究活動 (3) Visit of Yamaguchi University Department of Computer Science and Systems Engineering Y.Y. Yao, Ph.D. Associate Professor of Computer Science Department of Computer