cse 431s worksheet 2 - washington university in st. louis...first sets α derives-λ first s false r...

27
CSE 431S Worksheet 2 Washington University Spring 2013

Upload: others

Post on 08-May-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

CSE 431S

Worksheet 2

Washington University

Spring 2013

Page 2: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

Context-Free Grammar

• Create a grammar that recognizes the syntax of regular expressions.

– Examples: • “x”

• “x|x”

• “xx”

• “x*”

• “x|xx*”

• “(x|x)*”

– Note: we’re using ‘x’ as a placeholder terminal for a character

Page 3: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

Context-Free Grammar

• We want the resulting parse tree to mirror

the precedence and association of the

regular expression operators.

– Example: “x|xx” is the same as “x|(xx)”, not

“(x|x)x”.

Page 4: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

Context-Free Grammar

• Example: “x|xx” is the same as “x|(xx)”, not

“(x|x)x”.

– So the “xx” should be in a subtree.

x |

x x

Page 5: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

Context-Free Grammar

• Similar to our grammars for arithmetic

expressions

– Have a “level” of our grammar for each

operation, with lower precedence at higher

level

Page 6: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

Context-Free Grammar

R -> R ‘|’ C

| C

C -> C K

| K

K -> P *

| P

P -> ( R )

| x

Why can we not use R -> R ‘|’ R

for the first rule?

Page 7: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

Context-Free Grammar

S -> R $

R -> R ‘|’ C

| C

C -> C K

| K

K -> P *

| P

P -> ( R )

| x

Add end-of-file symbol.

Page 8: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

Derivation

• Show the derivation of “x|xx*” S -> R $

R -> R ‘|’ C

| C

C -> C K

| K

K -> P *

| P

P -> ( R )

| x

Page 9: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

Derivation

• Show the derivation of “x|xx*”

S => R $

=> R '|' C $

=> C '|' C $

=> K '|' C $

=> P '|' C $

=> x '|' C $

=> x '|' C K $

=> x '|' K K $

=> x '|' P K $

=> x '|' x K $

=> x '|' x P * $

=> x '|' x x * $

S -> R $

R -> R ‘|’ C

| C

C -> C K

| K

K -> P *

| P

P -> ( R )

| x

Page 10: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

LL(1) Parsing

• Create a grammar suitable for top-down

parsing.

– Will our grammar work as is? S -> R $

R -> R ‘|’ C

| C

C -> C K

| K

K -> P *

| P

P -> ( R )

| x

Page 11: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

LL(1) Parsing

• Must eliminate left recursion and common

prefixes.

A → A α

| β

A → β A’

A’ → α A’

| λ

Eliminate left recursion

becomes

Eliminate common prefixes

X → αβ1

| αβ2

X → αX’

X’ → β1

| β2

becomes

Page 12: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

LL(1) Parsing

S -> R $

R -> R ‘|’ C

| C

C -> C K

| K

K -> P *

| P

P -> ( R )

| x

S -> R $

R -> C R’

R’-> ‘|’ C R’

| λ

C -> K C’

C’-> K C’

| λ

K -> P K’

K’-> *

| λ

P -> ( R )

| x

Page 13: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

Derives Lambda α Derives-λ

S

R

R’

C

C’

K

K’

P

S -> R $

R -> C R’

R’ -> | C R’

R’ -> λ

C -> K C’

C’ -> K C’

C’ -> λ

K -> P K’

K’ -> *

K’ -> λ

P -> ( R )

P -> x

S -> R $

R -> C R’

R’-> ‘|’ C R’

| λ

C -> K C’

C’-> K C’

| λ

K -> P K’

K’-> *

| λ

P -> ( R )

| x

Page 14: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

Derives Lambda α Derives-λ

S False

R False

R’ True

C False

C’ True

K False

K’ True

P False

S -> R $ False

R -> C R’ False

R’ -> | C R’ False

R’ -> λ True

C -> K C’ False

C’ -> K C’ False

C’ -> λ True

K -> P K’ False

K’ -> * False

K’ -> λ True

P -> ( R ) False

P -> x False

S -> R $

R -> C R’

R’-> ‘|’ C R’

| λ

C -> K C’

C’-> K C’

| λ

K -> P K’

K’-> *

| λ

P -> ( R )

| x

Page 15: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

First Sets α Derives-λ First

S False

R False

R’ True

C False

C’ True

K False

K’ True

P False

S -> R $ False

R -> C R’ False

R’ -> | C R’ False

R’ -> λ True

C -> K C’ False

C’ -> K C’ False

C’ -> λ True

K -> P K’ False

K’ -> * False

K’ -> λ True

P -> ( R ) False

P -> x False

S -> R $

R -> C R’

R’-> ‘|’ C R’

| λ

C -> K C’

C’-> K C’

| λ

K -> P K’

K’-> *

| λ

P -> ( R )

| x

Page 16: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

First Sets α Derives-λ First

S False x, (

R False x, (

R’ True |

C False x, (

C’ True x, (

K False x, (

K’ True *

P False x, (

S -> R $ False x, (

R -> C R’ False x, (

R’ -> | C R’ False |

R’ -> λ True

C -> K C’ False x, (

C’ -> K C’ False x, (

C’ -> λ True

K -> P K’ False x, (

K’ -> * False *

K’ -> λ True

P -> ( R ) False (

P -> x False x

S -> R $

R -> C R’

R’-> ‘|’ C R’

| λ

C -> K C’

C’-> K C’

| λ

K -> P K’

K’-> *

| λ

P -> ( R )

| x

Page 17: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

Follow Sets α Derives-λ First Follow

S False x, (

R False x, (

R’ True |

C False x, (

C’ True x, (

K False x, (

K’ True *

P False x, (

S -> R $ False x, (

R -> C R’ False x, (

R’ -> | C R’ False |

R’ -> λ True

C -> K C’ False x, (

C’ -> K C’ False x, (

C’ -> λ True

K -> P K’ False x, (

K’ -> * False *

K’ -> λ True

P -> ( R ) False (

P -> x False x

S -> R $

R -> C R’

R’-> ‘|’ C R’

| λ

C -> K C’

C’-> K C’

| λ

K -> P K’

K’-> *

| λ

P -> ( R )

| x

Page 18: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

Follow Sets α Derives-λ First Follow

S False x, (

R False x, ( $, )

R’ True | $, )

C False x, ( |, $, )

C’ True x, ( |, $, )

K False x, ( x, (, |, $, )

K’ True * x, (, |, $, )

P False x, ( *, x, (, |, $, )

S -> R $ False x, (

R -> C R’ False x, (

R’ -> | C R’ False |

R’ -> λ True

C -> K C’ False x, (

C’ -> K C’ False x, (

C’ -> λ True

K -> P K’ False x, (

K’ -> * False *

K’ -> λ True

P -> ( R ) False (

P -> x False x

S -> R $

R -> C R’

R’-> ‘|’ C R’

| λ

C -> K C’

C’-> K C’

| λ

K -> P K’

K’-> *

| λ

P -> ( R )

| x

Page 19: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

Predict Sets α Derives-λ First Follow Predict

S False x, (

R False x, ( $, )

R’ True | $, )

C False x, ( |, $, )

C’ True x, ( |, $, )

K False x, ( x, (, |, $, )

K’ True * x, (, |, $, )

P False x, ( *, x, (, |, $, )

S -> R $ False x, (

R -> C R’ False x, (

R’ -> | C R’ False |

R’ -> λ True

C -> K C’ False x, (

C’ -> K C’ False x, (

C’ -> λ True

K -> P K’ False x, (

K’ -> * False *

K’ -> λ True

P -> ( R ) False (

P -> x False x

S -> R $

R -> C R’

R’-> ‘|’ C R’

| λ

C -> K C’

C’-> K C’

| λ

K -> P K’

K’-> *

| λ

P -> ( R )

| x

Page 20: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

Predict Sets α Derives-λ First Follow Predict

S False x, (

R False x, ( $, )

R’ True | $, )

C False x, ( |, $, )

C’ True x, ( |, $, )

K False x, ( x, (, |, $, )

K’ True * x, (, |, $, )

P False x, ( *, x, (, |, $, )

S -> R $ False x, ( x, (

R -> C R’ False x, ( x, (

R’ -> | C R’ False | |

R’ -> λ True $, )

C -> K C’ False x, ( x, (

C’ -> K C’ False x, ( x, (

C’ -> λ True |, $, )

K -> P K’ False x, ( x, (

K’ -> * False * *

K’ -> λ True x, (, |, $, )

P -> ( R ) False ( (

P -> x False x x

S -> R $

R -> C R’

R’-> ‘|’ C R’

| λ

C -> K C’

C’-> K C’

| λ

K -> P K’

K’-> *

| λ

P -> ( R )

| x

Page 21: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

LL(1) Parsing

• Is this grammar top-down parsable?

– For each nonterminal, the predict sets for its

productions must be disjoint.

Page 22: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

LR(0) Parsing

• Create the LR(0) states using our original

grammar. S -> R $

R -> R ‘|’ C

| C

C -> C K

| K

K -> P *

| P

P -> ( R )

| x

Page 23: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

LR(0) Parsing

• Create the start state.

State 0:

S -> . R $

Page 24: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

LR(0) Parsing

• Calculate the closure.

State 0:

S -> . R $ 1

R -> . R ‘|’ C 1

R -> . C 2

C -> . C K 2

C -> . K 3

K -> . P * 4

K -> . P 4

P -> . ( R ) 5

P -> . x 6

Page 25: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

LR(0) Parsing

State 0:

S -> . R $ 1

R -> . R ‘|’ C 1

R -> . C 2

C -> . C K 2

C -> . K 3

K -> . P * 4

K -> . P 4

P -> . ( R ) 5

P -> . x 6

State 1:

S -> R . $ 7

R -> R . ‘|’ C 8

Page 26: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

LR(0) Parsing State 0: S -> . R $ 1

R -> . R ‘|’ C 1

R -> . C 2

C -> . C K 2

C -> . K 3

K -> . P * 4

K -> . P 4

P -> . ( R ) 5

P -> . x 6

State 1: S -> R . $ 7

R -> R . ‘|’ C 8

State 2: R -> C .

C -> C . K 9

K -> . P * 4

K -> . P 4

P -> . ( R ) 5

P -> . X 6

State 3: C -> K .

State 4: K -> P . * 10

K -> P .

State 5: P -> ( . R ) 11

R -> . R ‘|’ C 11

R -> . C 2

C -> . C K 2

C -> . K 3

K -> . P * 4

K -> . P 4

P -> . ( R ) 5

P -> . x 6

State 6: P -> x .

State 7: S -> R $ .

State 8: R -> R ‘|’ . C 12

C -> . C K 12

C -> . K 3

K -> . P * 4

K -> . P 4

P -> . ( R ) 5

P -> . x 6

State 9: C -> C K .

State 10: K -> P * .

State 11: P -> ( R . ) 13

R -> R . ‘|’ C 8

State 12: R -> R ‘|’ C .

C -> C . K 9

K -> . P * 4

K -> . P 4

P -> . ( R ) 5

P -> . x 6

State 13: P -> ( R ) .

Page 27: CSE 431S Worksheet 2 - Washington University in St. Louis...First Sets α Derives-λ First S False R False R’ True C False C’ True K False K’ True P False S -> R $ False R ->

LR(0) Parsing

• Is this grammar LR(0) parsable?

– No

• Shift-reduce conflicts in states 2, 4, and 12.