CSE443 Compilers Dr. Carl Alphonce alphonce@buffalo.edu 343 Davis - - PowerPoint PPT Presentation

cse443 compilers
SMART_READER_LITE
LIVE PREVIEW

CSE443 Compilers Dr. Carl Alphonce alphonce@buffalo.edu 343 Davis - - PowerPoint PPT Presentation

CSE443 Compilers Dr. Carl Alphonce alphonce@buffalo.edu 343 Davis Hall Announcements HW 1 posted PR 1 posted One student still not part of a team (will need to join a 3-person team) Team meeting scheduling - please respond to Doodle poll!


slide-1
SLIDE 1

CSE443 Compilers

  • Dr. Carl Alphonce

alphonce@buffalo.edu 343 Davis Hall

slide-2
SLIDE 2

Announcements

HW 1 posted PR 1 posted One student still not part of a team (will need to join a 3-person team) Team meeting scheduling - please respond to Doodle poll!

slide-3
SLIDE 3

Phases of a compiler

Figure 1.6, page 5 of text

Lexical structure

slide-4
SLIDE 4

Process of building lexical analyzer

DFA character stream token stream

lexical analyzer 5) The minimal DFA is

  • ur lexical analyzer

DFA language regex NFA

slide-5
SLIDE 5

Focus last time

regex NFA

slide-6
SLIDE 6

focus today

DFA NFA

slide-7
SLIDE 7

(a|b)*abb

first we construct an NFA from this regular expression

slide-8
SLIDE 8

(a|b)*abb

a

slide-9
SLIDE 9

(a|b)*abb

a b

slide-10
SLIDE 10

(a|b)*abb

ℇ ℇ ℇ ℇ a b

slide-11
SLIDE 11

(a|b)*abb

ℇ ℇ ℇ ℇ a b ℇ ℇ ℇ ℇ

slide-12
SLIDE 12

(a|b)*abb

ℇ ℇ ℇ ℇ a b a ℇ ℇ ℇ ℇ

slide-13
SLIDE 13

(a|b)*abb

ℇ ℇ ℇ ℇ a b a ℇ ℇ ℇ ℇ b

slide-14
SLIDE 14

(a|b)*abb

ℇ ℇ ℇ ℇ a b a ℇ ℇ ℇ ℇ b b

slide-15
SLIDE 15

(a|b)*abb

ℇ ℇ ℇ ℇ a b a ℇ ℇ ℇ ℇ b b 1 2 3 4 5 6 7 8 9

10

slide-16
SLIDE 16

Operations

ℇ-closure(t) is the set of states reachable from state t using only ℇ-transitions. ℇ-closure(T) is the set of states reachable from any state t ∈ T using only ℇ- transitions. move(T,a) is the set of states reachable from any state t ∈ T following a transition on symbol a ∈ ∑.

slide-17
SLIDE 17

NFA -> DFA algorithm

(set of states construction - page 153 of text)

INPUT: An NFA N = (S, ∑, 𝛆, s0, F) OUTPUT: A DFA D = (S', ∑, 𝛆', s0', F') such that ℒ(D)=ℒ(N) ALGORITHM: Compute s0' = ℇ-closure(s0), an unmarked set of states Set S' = { s0' } while there is an unmarked T ∈ S' mark T for each symbol a ∈ ∑ let U = ℇ-closure(move(T,a)) if U ∉ S', add unmarked U to S' add transition: 𝛆'(T,a) = U F' is the subset of S' all of whose members contain a state in F .

slide-18
SLIDE 18

NFA -> DFA algorithm

(set of states construction - page 153 of text)

S0' = { A = {0,1,2,4,7} } Pick an unmarked set from S0', A, mark it, and ∀ x ∈ ∑ let U = ℇ-closure(move(A,x)), if U ∉ S', add unmarked U to S' and add transition: 𝛆'(A,x) = U S1' = { A✔ , B = {1,2,3,4,6,7,8} , C = {1,2,4,5,6,7}} 𝛆'(A,a) = B 𝛆'(A,b) = C Pick an unmarked set from S1', B, mark it, and ∀ x ∈ ∑ let U = ℇ-closure(move(B,x)), if U ∉ S', add unmarked U to S' and add transition: 𝛆'(B,x) = U S2' = { A✔ , B✔ , C , D = {1,2,4,5,6,7,9}} 𝛆'(B,a) = B 𝛆'(B,b) = D Pick an unmarked set from S2', C, mark it, and ∀ x ∈ ∑ let U = ℇ-closure(move(C,x)), if U ∉ S', add unmarked U to S' and add transition: 𝛆'(C,x) = U S3' = { A✔ , B✔ , C✔ , D } 𝛆'(C,a) = B 𝛆'(C,b) = C

slide-19
SLIDE 19

NFA -> DFA algorithm

(set of states construction - page 153 of text)

Pick an unmarked set from S3', D, mark it, and ∀ x ∈ ∑ let U = ℇ-closure(move(D,x)), if U ∉ S', add unmarked U to S' and add transition: 𝛆'(D,x) = U S4' = { A✔ , B✔ , C✔ , D✔ , E = {1,2,4,5,6,7,10} } 𝛆'(D,a) = B 𝛆'(D,b) = E Pick an unmarked set from S4', E, mark it, and ∀ a ∈ ∑ let U = ℇ-closure(move(E,a)), if U ∉ S', add unmarked U to S' and add transition: 𝛆'(E,a) = U S5' = { A✔ , B✔ , C✔ , D✔ , E✔ } 𝛆'(E,a) = B 𝛆'(E,b) = C Since there are no unmarked sets in S5' the algorithm has reached a fixed point. STOP. F' is the subset of S' all of whose members contain a state in F: {E}

slide-20
SLIDE 20

ℇ ℇ ℇ ℇ a b a ℇ ℇ ℇ ℇ b b 1 2 3 4 5 6 7 8 9

10

The original NFA

slide-21
SLIDE 21

The resulting DFA

DFA = ( {A, B, C, D, E}, {a, b}, A, 𝛆', {E}), where 𝛆'(A,a) = B 𝛆'(A,b) = C 𝛆'(B,a) = B 𝛆'(B,b) = D 𝛆'(C,a) = B 𝛆'(C,b) = C 𝛆'(D,a) = B 𝛆'(D,b) = E 𝛆'(E,a) = B 𝛆'(E,b) = C

a b B C A D

E

a b b a b a a b

slide-22
SLIDE 22

Process of building lexical analyzer

DFA character stream token stream

lexical analyzer 5) The minimal DFA is

  • ur lexical analyzer

DFA language regex NFA

slide-23
SLIDE 23

focus above: NFA to DFA conversion

DFA NFA

slide-24
SLIDE 24

DFA DFA

next step: DFA minimization

slide-25
SLIDE 25

NFA for (a|b)*abb

ℇ ℇ ℇ ℇ a b a ℇ ℇ ℇ ℇ b b 1 2 3 4 5 6 7 8 9

10

slide-26
SLIDE 26

a b B C A D

E

a b b a b a a b

DFA for (a|b)*abb

slide-27
SLIDE 27

Minimization Algorithm

slide-28
SLIDE 28

DFA -> minimal DFA algorithm

INPUT: An DFA D = (S, ∑, 𝛆, s0, F) OUTPUT: A DFA D' = (S', ∑, 𝛆', s0', F') such that S' is as small as possible, and ℒ(D)=ℒ(D') ALGORITHM:

  • 1. Let π = { F

, S-F }

  • 2. Let π' = π. For every group G of π:

partition G into subgroups such that two states s and t are in the same subgroup iff for all input symbols a, states s and t have transitions on a to states in the same group of π Replace G in π' by the set of all subgrops formed

  • 3. if π'=π let π"=π, otherwise set π=π' and repeat 2.
  • 4. Choose one state in each group of π" as a representative for that group.

a) The start state of D' is the representative of the group containing the start state of D b) The accepting states of D' are the representatives of those groups that contain an accepting state of D c) Adjust transitions from representatives to representatives.

slide-29
SLIDE 29

ORIGINAL DFA D = ( S, ∑, s0, 𝛆, F)

S = {A, B, C, D, E} ∑ = {a, b} s0 = A 𝛆 = {(A,a)->B, (A,b)->C, (B,a)->B, (B,b)->D, (C,a)->B, (C,b)->C, (D,a)->B, (D,b)->E, (E,a)->B, (E,b)->C} F = {E}

slide-30
SLIDE 30

Finding the minimal set

  • f distinct sets of states

𝞺0 = { F

, S-F } = { {E}, {A,B,C,D} } Pick a non-singleton set X = {A,B,C,D} from 𝞺0 and check behavior of states on all transitions on symbols in ∑ (are they to states in X or to other groups in the partition?) (A,a)->B, (B,a)->B, (C,a)->B, (D,a)->B (A,b)->C, (B,b)->D, (C,b)->C, (D,b)->E D behaves differently, so put it in its own partition.

slide-31
SLIDE 31

Finding the minimal set

  • f distinct sets of states

𝞺1 = { {E}, {A, B, C}, {D} }

Pick a non-singleton set X = {A,B,C} from 𝞺1 and check behavior of states on all transitions on symbols in ∑ (are they to states in X or to other groups in the partition?) (A,a)->B, (B,a)->B, (C,a)->B (A,b)->C, (B,b)->D, (C,b)->C B behaves differently, so put it in its own partition.

slide-32
SLIDE 32

Finding the minimal set

  • f distinct sets of states

𝞺2 = { {E}, {A, C}, {B}, {D} }

Pick a non-singleton set X = {A,C} from 𝞺2 and check behavior of states on all transitions on symbols in ∑ (are they to states in X or to other groups in the partition?) (A,a)->B, (C,a)->B (A,b)->C, (C,b)->C A and C both transition outside the group on symbol a, to the same group (the one containing B). Therefore A and C are indistinguishable in their behaviors, so do not split this group.

slide-33
SLIDE 33

Finding the minimal set

  • f distinct sets of states

𝞺3 = { {E}, {A, C}, {B}, {D} } = 𝞺2

We have reached a fixed point! STOP

slide-34
SLIDE 34

Pick a representative from each group

𝞺FINAL = { {E}, {A, C}, {B}, {D} }

slide-35
SLIDE 35

MINIMAL DFA D' = ( S', ∑, s'0, 𝛆', F')

S' = {B, C, D, E} -> the representatives ∑ = {a, b} -> no change s'0 = C -> the representative of the group that contained D's starting state, A 𝛆 = (on next slide) F = {E} -> the representatives of all the groups that contained any of D's final states (which, in this case, was just {E})

slide-36
SLIDE 36

The new transition function 𝛆'

For each state s ∈ S', consider its transitions in D, on each a ∈ ∑. if 𝛆(s,a) = t, then 𝛆'(s,a) = r, where r is the representative of the group containing t.

slide-37
SLIDE 37

𝛆 = { (B,a)->B, (B,b)->D, (C,a)->B, (C,b)->C, (D,a)->B, (D,b)->E, (E,a)->B, (E,b)->C }

slide-38
SLIDE 38

{ A , C }

b B D

E

a b a b a a b

Minimal DFA for (a|b)*abb

slide-39
SLIDE 39

a b B C A D

E

a b b a b a a b

DFA for (a|b)*abb

Non- minimized