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 Team formation Please sit with your teams starting next week. C vs SML? Lexical Phases of structure a compiler Figure 1.6, page 5 of text languages & grammars


slide-1
SLIDE 1

CSE443 Compilers

  • Dr. Carl Alphonce

alphonce@buffalo.edu 343 Davis Hall

slide-2
SLIDE 2

Team formation

Please sit with your teams starting next week. C vs SML?

slide-3
SLIDE 3

Phases of a compiler

Figure 1.6, page 5 of text

Lexical structure

slide-4
SLIDE 4

Formally, a grammar is defined by 4 items:

  • 1. N, a set of non-terminals
  • 2. ∑, a set of terminals
  • 3. P, a set of productions
  • 4. S, a start symbol

G = (N, ∑, P, S)

languages & grammars

slide-5
SLIDE 5

N, a set of non-terminals ∑, a set of terminals (alphabet) N ∩ ∑ = {} P, a set of productions of the form (right linear) X -> a X -> aY X -> ℇ X ∈ N, Y ∈ N, a ∈ ∑, ℇ denotes the empty string S, a start symbol S ∈ N

languages & grammars

slide-6
SLIDE 6

Lexical Analysis

Lexical structure described by regular grammar Deterministic finite state machine performs analysis

slide-7
SLIDE 7

LANGUAGE operations

If L and M are regular, so are:

L ∪ M = { s | s ∈ L or s ∈ M } union LM = { st | s ∈ L and t ∈ M } concatenation L* = ∪i=0,∞ Li Kleene closure

By definition, L0 = {ℇ}

slide-8
SLIDE 8

Given an alphabet ∑ REGular EXpression (regex) Inductive definition

ℇ is a regex 𝓜(ℇ) = {ℇ} For each a ∈ ∑, a is a regex 𝓜(a) = {a}

slide-9
SLIDE 9

Regular expressions (regex) Inductive definition

Assume r and s are regexes. r|s is a regex denoting 𝓜(r)∪𝓜(s) rs is a regex denoting 𝓜(r)𝓜(s) r* is a regex denoting (𝓜(r))* (r) is a regex denoting 𝓜(r) Precedence: Kleene closure > concatenation > union Associativity: all left-associative (minimize use of parentheses: (r|s)|t = r|s|t )

slide-10
SLIDE 10

Algebraic laws

Assume r and s are regexes. Commutativity r|s = s|r Associativity r|(s|t) = (r|s)|t and r(st) = (rs)t Disributivity r(s|t) = rs|rt and (s|t)r = sr|tr Identity ℇr = rℇ = r Idempotency r** = r*

slide-11
SLIDE 11

We can describe a regular language using a regular expression

slide-12
SLIDE 12

A regular expression can be recognized using a finite state machine. Machines: NFA non-deterministic finite automaton DFA deterministic finite automaton

slide-13
SLIDE 13

Process of building lexical analyzer

language

1) spell out the language

slide-14
SLIDE 14

Process of building lexical analyzer

language regex

2) formulate a regular expression

slide-15
SLIDE 15

Process of building lexical analyzer

language regex NFA

3) build an NFA

slide-16
SLIDE 16

Process of building lexical analyzer

DFA

4) transform NFA to DFA

language regex NFA

slide-17
SLIDE 17

Process of building lexical analyzer

DFA

5) transform DFA to a minimal DFA

DFA language regex NFA

slide-18
SLIDE 18

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

Focus for today

regex NFA

slide-20
SLIDE 20

Nondeterministic Finite Automata (NFA)

A finite set of states S An alphabet ∑, ℇ ∉ ∑ 𝛆 ⊆ S X (∑ ∪ {ℇ}) X 𝒬(S) (transition function) s0 ∈ S (a single start state) F ⊆ S (a set of final or accepting states)

slide-21
SLIDE 21

Deterministic Finite Automata (DFA)

A finite set of states S An alphabet ∑, ℇ ∉ ∑ 𝛆 ⊆ S X ∑ X S (transition function) s0 ∈ S (a single start state) F ⊆ S (a set of final or accepting states)

slide-22
SLIDE 22

Regex -> NFA

1 ℇ 1 a

N(s) N(t)

1 for each a ∈ ∑ S | t ℇ ℇ ℇ ℇ

Initial state: arrow from nowhere pointing in. Often labelled state 0. Final state: drawn with a double circle Arrows are labeled with ℇ

  • r a ∈ ∑.
slide-23
SLIDE 23

Regex -> NFA

1 ℇ 1 a

N(s) N(t)

1 for each a ∈ ∑ S | t ℇ ℇ ℇ ℇ

slide-24
SLIDE 24

Regex -> NFA

N(s) N(s)

1

N(t)

1 ℇ ℇ ℇ ℇ St S*

slide-25
SLIDE 25

Simple example

static

slide-26
SLIDE 26

Simple example

static 1 2 3 4 5 6 s t a t i c

slide-27
SLIDE 27

Simple example

static struct 1 2 3 4 5 6 s t a t i c 7 8 9

10 11 12 13

s t r u c t i

F

ℇ ℇ ℇ ℇ