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 http:/ /www.cse.buffalo.edu/faculty/alphonce/SP17 /CSE443/index.php https:/ /piazza.com/class/iybn4ndqa1s3ei Lexical Phases of structure a compiler Figure 1.6,


slide-1
SLIDE 1

CSE443 Compilers

  • Dr. Carl Alphonce

alphonce@buffalo.edu 343 Davis Hall

http:/ /www.cse.buffalo.edu/faculty/alphonce/SP17 /CSE443/index.php https:/ /piazza.com/class/iybn4ndqa1s3ei

slide-2
SLIDE 2

Phases of a compiler

Figure 1.6, page 5 of text

Lexical structure

slide-3
SLIDE 3

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-4
SLIDE 4

Focus last time

regex NFA

slide-5
SLIDE 5

focus today

DFA NFA

slide-6
SLIDE 6

(a|b)*abb

first we construct an NFA from this regular expression

slide-7
SLIDE 7

(a|b)*abb

a

slide-8
SLIDE 8

(a|b)*abb

a b

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 a ℇ ℇ ℇ ℇ

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

  • nly ℇ-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 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

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