formal grammars

73
IN4303 2016-2017 Compiler Construction Formal Grammars language specification Guido Wachsmuth, Eelco Visser

Upload: eelco-visser

Post on 25-Jan-2017

61 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Formal Grammars

IN4303 2016-2017 Compiler Construction

Formal Grammars language specification

Guido Wachsmuth, Eelco Visser

Page 2: Formal Grammars

Formal Grammars 2

3 * +7 21

3 * +7 21

Exp ExpExp

Exp

Exp

parser

Page 3: Formal Grammars

Formal Grammars 3

syntax definition

errors

parse generate

check

parse table

generic parser

Page 4: Formal Grammars

Formal Grammars

StrategoDynSem

NaBL2

SDF3

ESVeditor

SPTtests

4

syntax definition

concrete syntax

abstract syntax

static semantics

name binding

type system

dynamic semantics

translation

interpretation

Page 5: Formal Grammars

Formal Grammars

StrategoDynSem

NaBL2

SDF3

ESVeditor

SPTtests

5

syntax definition

concrete syntax

abstract syntax

static semantics

name binding

type system

dynamic semantics

translation

interpretation

Page 6: Formal Grammars

Formal Grammars

StrategoDynSem

NaBL2

SDF3

ESVeditor

SPTtests

6

syntax definition

concrete syntax

abstract syntax

static semantics

name binding

type system

dynamic semantics

translation

interpretation

Page 7: Formal Grammars

Formal Grammars 7

P A R E N T A L

ADVISORYTHEORETICAL CONTENT

Page 8: Formal Grammars

Formal Grammars 8

formal languages

Page 9: Formal Grammars

Formal Grammars 9

infinite productivity

Page 10: Formal Grammars

Formal Grammars 10

finite models

Page 11: Formal Grammars

Formal Grammars 11

Philosophy

Linguistics

lexicology

grammar

morphology

syntax

phonology

semantics

Interdisciplinary

Computer Science

syntax

semantics

Page 12: Formal Grammars

Formal Grammars 12

Philosophy

Linguistics

lexicology

grammar

morphology

syntax

phonology

semantics

Interdisciplinary

Computer Science

syntax

semantics

Page 13: Formal Grammars

Formal Grammars 13

Page 14: Formal Grammars

Formal Grammars 13

vocabulary Σ

finite, nonempty set of elements (words, letters)

alphabet

Page 15: Formal Grammars

Formal Grammars 13

vocabulary Σ

finite, nonempty set of elements (words, letters)

alphabet

string over Σ

finite sequence of elements chosen from Σ

word, sentence, utterance

Page 16: Formal Grammars

Formal Grammars 13

vocabulary Σ

finite, nonempty set of elements (words, letters)

alphabet

string over Σ

finite sequence of elements chosen from Σ

word, sentence, utterance

formal language λ

set of strings over a vocabulary Σ

λ ⊆ Σ*

Page 17: Formal Grammars

Formal Grammars 14

formal grammars

Page 18: Formal Grammars

Formal Grammars 15

formal grammar G

derivation relation ⇒G

formal language L(G) ⊆ Σ*

L(G) = {w∈Σ* | S ⇒G* w}

Page 19: Formal Grammars

Formal Grammars 16

G = (N, Σ, P, S)

Num → Digit Num Num → Digit Digit → “0” Digit → “1” Digit → “2” Digit → “3” Digit → “4” Digit → “5” Digit → “6” Digit → “7” Digit → “8” Digit → “9”

decimal numbers morphology

Page 20: Formal Grammars

Formal Grammars 17

G = (N, Σ, P, S)

Num → Digit Num Num → Digit Digit → “0” Digit → “1” Digit → “2” Digit → “3” Digit → “4” Digit → “5” Digit → “6” Digit → “7” Digit → “8” Digit → “9”

decimal numbers morphology

Σ: finite set of terminal symbols

Page 21: Formal Grammars

Formal Grammars 18

G = (N, Σ, P, S)

Num → Digit Num Num → Digit Digit → “0” Digit → “1” Digit → “2” Digit → “3” Digit → “4” Digit → “5” Digit → “6” Digit → “7” Digit → “8” Digit → “9”

decimal numbers morphology

Σ: finite set of terminal symbols

N: finite set of non-terminal symbols

Page 22: Formal Grammars

Formal Grammars 19

G = (N, Σ, P, S)

Num → Digit Num Num → Digit Digit → “0” Digit → “1” Digit → “2” Digit → “3” Digit → “4” Digit → “5” Digit → “6” Digit → “7” Digit → “8” Digit → “9”

decimal numbers morphology

Σ: finite set of terminal symbols

N: finite set of non-terminal symbols

S∈N: start symbol

Page 23: Formal Grammars

Formal Grammars 20

G = (N, Σ, P, S)

Num → Digit Num Num → Digit Digit → “0” Digit → “1” Digit → “2” Digit → “3” Digit → “4” Digit → “5” Digit → “6” Digit → “7” Digit → “8” Digit → “9”

decimal numbers morphology

Σ: finite set of terminal symbols

N: finite set of non-terminal symbols

S∈N: start symbol

P⊆N×(N∪Σ)*: set of production rules

Page 24: Formal Grammars

Formal Grammars 21

Num ⇒

Digit Num ⇒

4 Num ⇒

4 Digit Num ⇒

4 3 Num ⇒

4 3 Digit Num ⇒

4 3 0 Num ⇒

4 3 0 Digit ⇒

4 3 0 3

Num → Digit Num ⇒

Digit → “4” ⇒

Num → Digit Num ⇒

Digit → “3” ⇒

Num → Digit Num ⇒

Digit → “0” ⇒

Num → Digit ⇒

Digit → “3” ⇒

decimal numbers production

Page 25: Formal Grammars

Formal Grammars 21

Num ⇒

Digit Num ⇒

4 Num ⇒

4 Digit Num ⇒

4 3 Num ⇒

4 3 Digit Num ⇒

4 3 0 Num ⇒

4 3 0 Digit ⇒

4 3 0 3

Num → Digit Num ⇒

Digit → “4” ⇒

Num → Digit Num ⇒

Digit → “3” ⇒

Num → Digit Num ⇒

Digit → “0” ⇒

Num → Digit ⇒

Digit → “3” ⇒

decimal numbers production

leftmost derivation

Page 26: Formal Grammars

Formal Grammars 22

Num ⇒

Digit Num ⇒

Digit Digit Num ⇒

Digit Digit Digit Num ⇒

Digit Digit Digit Digit ⇒

Digit Digit Digit 3 ⇒

Digit Digit 0 3 ⇒

Digit 3 0 3 ⇒

4 3 0 3

Num → Digit Num ⇒

Num → Digit Num ⇒

Num → Digit Num ⇒

Num → Digit ⇒

Digit → “3” ⇒ ⇒

Digit → “0” ⇒ ⇒

Digit → “3” ⇒

Digit → “4” ⇒ ⇒

decimal numbers production

Page 27: Formal Grammars

Formal Grammars 22

Num ⇒

Digit Num ⇒

Digit Digit Num ⇒

Digit Digit Digit Num ⇒

Digit Digit Digit Digit ⇒

Digit Digit Digit 3 ⇒

Digit Digit 0 3 ⇒

Digit 3 0 3 ⇒

4 3 0 3

Num → Digit Num ⇒

Num → Digit Num ⇒

Num → Digit Num ⇒

Num → Digit ⇒

Digit → “3” ⇒ ⇒

Digit → “0” ⇒ ⇒

Digit → “3” ⇒

Digit → “4” ⇒ ⇒

decimal numbers production

rightmost derivation

Page 28: Formal Grammars

Formal Grammars 23

G = (N, Σ, P, S)

Exp → Num Exp → Exp “+” Exp Exp → Exp “−” Exp Exp → Exp “*” Exp Exp → Exp “/” Exp Exp → “(” Exp “)”

binary expressions syntax

Page 29: Formal Grammars

Formal Grammars 24

G = (N, Σ, P, S)

Exp → Num Exp → Exp “+” Exp Exp → Exp “−” Exp Exp → Exp “*” Exp Exp → Exp “/” Exp Exp → “(” Exp “)”

binary expressions syntax

Σ: finite set of terminal symbols

Page 30: Formal Grammars

Formal Grammars 25

G = (N, Σ, P, S)

Exp → Num Exp → Exp “+” Exp Exp → Exp “−” Exp Exp → Exp “*” Exp Exp → Exp “/” Exp Exp → “(” Exp “)”

binary expressions syntax

Σ: finite set of terminal symbols

N: finite set of non-terminal symbols

Page 31: Formal Grammars

Formal Grammars 26

G = (N, Σ, P, S)

Exp → Num Exp → Exp “+” Exp Exp → Exp “−” Exp Exp → Exp “*” Exp Exp → Exp “/” Exp Exp → “(” Exp “)”

binary expressions syntax

Σ: finite set of terminal symbols

N: finite set of non-terminal symbols

S∈N: start symbol

Page 32: Formal Grammars

Formal Grammars 27

G = (N, Σ, P, S)

Exp → Num Exp → Exp “+” Exp Exp → Exp “−” Exp Exp → Exp “*” Exp Exp → Exp “/” Exp Exp → “(” Exp “)”

binary expressions syntax

Σ: finite set of terminal symbols

N: finite set of non-terminal symbols

S∈N: start symbol

P⊆N×(N∪Σ)*: set of production rules

Page 33: Formal Grammars

Formal Grammars 28

Exp ⇒

Exp + Exp ⇒

Exp + Exp * Exp ⇒

3 + Exp * Exp ⇒

3 + 4 * Exp ⇒

3 + 4 * 5

Exp → Exp “+” Exp ⇒

Exp → Exp “*” Exp ⇒

Exp → Num ⇒

Exp → Num ⇒

Exp → Num ⇒

binary expressions production

Page 34: Formal Grammars

Formal Grammars 29

formal grammar G = (N, Σ, P, S)

nonterminal symbols N

terminal symbols Σ

production rules P ⊆ (N∪Σ)* N (N∪Σ)* × (N∪Σ)*

start symbol S∈N

Page 35: Formal Grammars

Formal Grammars 29

formal grammar G = (N, Σ, P, S)

nonterminal symbols N

terminal symbols Σ

production rules P ⊆ (N∪Σ)* N (N∪Σ)* × (N∪Σ)*

start symbol S∈N

nonterminal symbol

Page 36: Formal Grammars

Formal Grammars 29

formal grammar G = (N, Σ, P, S)

nonterminal symbols N

terminal symbols Σ

production rules P ⊆ (N∪Σ)* N (N∪Σ)* × (N∪Σ)*

start symbol S∈N

context

Page 37: Formal Grammars

Formal Grammars 29

formal grammar G = (N, Σ, P, S)

nonterminal symbols N

terminal symbols Σ

production rules P ⊆ (N∪Σ)* N (N∪Σ)* × (N∪Σ)*

start symbol S∈N

replacement

Page 38: Formal Grammars

Formal Grammars 29

formal grammar G = (N, Σ, P, S)

nonterminal symbols N

terminal symbols Σ

production rules P ⊆ (N∪Σ)* N (N∪Σ)* × (N∪Σ)*

start symbol S∈N

Page 39: Formal Grammars

Formal Grammars 30

type-0, unrestricted: P ⊆ (N∪Σ)* N (N∪Σ)* × (N∪Σ)*

type-1, context-sensitive: (a A c, a b c)

type-2, context-free: P ⊆ N × (N∪Σ)*

type-3, regular: (A, x) or (A, xB)

Page 40: Formal Grammars

Formal Grammars 31

formal grammars

context-sensitive

context-free

regular

Page 41: Formal Grammars

Formal Grammars 32

formal grammar G

derivation relation ⇒G

formal language L(G) ⊆ Σ*

L(G) = {w∈Σ* | S ⇒G* w}

Page 42: Formal Grammars

Formal Grammars 33

formal grammar G = (N, Σ, P, S)

derivation relation ⇒G ⊆ (N∪Σ)* × (N∪Σ)*

w ⇒G w’ ⇔

∃(p, q)∈P: ∃u,v∈(N∪Σ)*:

w=u p v ∧ w’=u q v

formal language L(G) ⊆ Σ*

L(G) = {w∈Σ* | S ⇒G* w}

Page 43: Formal Grammars

Formal Grammars 34

formal languages

context-sensitive

context-free

regular

Page 44: Formal Grammars

Formal Grammars 35

3 * +7 21

3 * +7 21

Exp ExpExp

Exp

Exp

parser

Derivation is about productivity. But what about parsing?

Page 45: Formal Grammars

Formal Grammars 36

word problem

Page 46: Formal Grammars

Formal Grammars 37

word problem χL: Σ*→ {0,1}

w → 1, if w∈L

w → 0, else

theoretical computer science decidability & complexity

Page 47: Formal Grammars

Formal Grammars 37

word problem χL: Σ*→ {0,1}

w → 1, if w∈L

w → 0, else

decidability

type-0: semi-decidable

type-1, type-2, type-3: decidable

theoretical computer science decidability & complexity

Page 48: Formal Grammars

Formal Grammars 37

word problem χL: Σ*→ {0,1}

w → 1, if w∈L

w → 0, else

decidability

type-0: semi-decidable

type-1, type-2, type-3: decidable

complexity

type-1: PSPACE-complete

type-2, type-3: P

theoretical computer science decidability & complexity

Page 49: Formal Grammars

Formal Grammars 37

word problem χL: Σ*→ {0,1}

w → 1, if w∈L

w → 0, else

decidability

type-0: semi-decidable

type-1, type-2, type-3: decidable

complexity

type-1: PSPACE-complete

type-2, type-3: P

theoretical computer science decidability & complexity

PSPACE⊇NP⊇P

Page 50: Formal Grammars

Formal Grammars 38

formal grammars

context-sensitive

context-free

regular

theoretical computer science decidability & complexity

Page 51: Formal Grammars

Formal Grammars 38

formal grammars

context-sensitive

context-free

regular

theoretical computer science decidability & complexity

Page 52: Formal Grammars

Formal Grammars 38

formal grammars

context-sensitive

context-free

regular

theoretical computer science decidability & complexity

Page 53: Formal Grammars

Formal Grammars 39

Exp → Num Exp → Exp “+” Exp Exp → Exp “−” Exp Exp → Exp “*” Exp Exp → Exp “/” Exp Exp → “(” Exp “)”

context-free grammars production vs. reduction rules

Page 54: Formal Grammars

Formal Grammars 39

Exp → Num Exp → Exp “+” Exp Exp → Exp “−” Exp Exp → Exp “*” Exp Exp → Exp “/” Exp Exp → “(” Exp “)”

context-free grammars production vs. reduction rules

productive form

Page 55: Formal Grammars

Formal Grammars 39

Exp → Num Exp → Exp “+” Exp Exp → Exp “−” Exp Exp → Exp “*” Exp Exp → Exp “/” Exp Exp → “(” Exp “)”

Num → Exp Exp “+” Exp → Exp Exp “−” Exp → Exp Exp “*” Exp → Exp Exp “/” Exp → Exp “(” Exp “)” → Exp

context-free grammars production vs. reduction rules

productive form

Page 56: Formal Grammars

Formal Grammars 39

Exp → Num Exp → Exp “+” Exp Exp → Exp “−” Exp Exp → Exp “*” Exp Exp → Exp “/” Exp Exp → “(” Exp “)”

Num → Exp Exp “+” Exp → Exp Exp “−” Exp → Exp Exp “*” Exp → Exp Exp “/” Exp → Exp “(” Exp “)” → Exp

context-free grammars production vs. reduction rules

productive form reductive form

Page 57: Formal Grammars

Formal Grammars 40

3 + 4 * 5 ⇒

Exp + 4 * 5 ⇒

Exp + Exp * 5 ⇒

Exp + Exp * Exp ⇒

Exp + Exp ⇒

Exp

Num → Exp ⇒

Num → Exp ⇒

Num → Exp ⇒

Exp “*” Exp → Exp ⇒

Exp “+” Exp → Exp ⇒⇒

binary expressions reduction

Page 58: Formal Grammars

Formal Grammars 41

3 * +7 21

3 * +7 21

Exp ExpExp

Exp

Exp

parser

The word problem is about membership. But what about structure?

Page 59: Formal Grammars

Formal Grammars 42

syntax trees

Page 60: Formal Grammars

Formal Grammars 43

Exp

Num

Exp

+Exp Exp

Exp

−Exp Exp

Exp

*Exp Exp

Exp

/Exp Exp

Exp

Exp( )

context-free grammars tree construction rules

Page 61: Formal Grammars

Formal Grammars 44

binary expressions tree construction

3 + *4 5

Page 62: Formal Grammars

Formal Grammars 44

binary expressions tree construction

Exp

3 + *4 5

Page 63: Formal Grammars

Formal Grammars 44

binary expressions tree construction

Exp Exp

3 + *4 5

Page 64: Formal Grammars

Formal Grammars 44

binary expressions tree construction

Exp Exp

3 + *4 5

Exp

Page 65: Formal Grammars

Formal Grammars 44

binary expressions tree construction

Exp

Exp

Exp

3 + *4 5

Exp

Page 66: Formal Grammars

Formal Grammars 44

binary expressions tree construction

Exp

Exp

Exp

3 + *4 5

Exp

Exp

Page 67: Formal Grammars

Formal Grammars 45

binary expressions ambiguity

Exp

Exp

Exp

3 + *4 5

Exp

Exp

Exp

Exp

Exp

3 + *4 5

Exp

Exp

Page 68: Formal Grammars

Formal Grammars 46

syntax trees

different trees for same sentence

derivations

different leftmost derivations for same sentence

different rightmost derivations for same sentence

NOT just different derivations for same sentence

context-free grammars ambiguity

Page 69: Formal Grammars

Formal Grammars 47

parse trees

parent node: nonterminal symbol

child nodes: terminal symbols

abstract syntax trees (ASTs)

abstract over terminal symbols

convey information at parent nodes

abstract over injective production rules

syntax trees parse trees & abstract syntax trees

Page 70: Formal Grammars

Formal Grammars 48

binary expressions parse tree & abstract syntax tree

Exp

Exp

Exp Exp

Exp

(3 + *4 5 )

Exp

Page 71: Formal Grammars

Formal Grammars 48

binary expressions parse tree & abstract syntax tree

Const

Mul

Const

3 4 5

Const

Add

Exp

Exp

Exp Exp

Exp

(3 + *4 5 )

Exp

Page 72: Formal Grammars

Formal Grammars 49

Except where otherwise noted, this work is licensed under