Upload
guido-wachsmuth
View
1.930
Download
0
Embed Size (px)
DESCRIPTION
Presentation slides for lecture 13 of course IN4303 on Compiler Construction at TU Delft.
Citation preview
Challenge the future
DelftUniversity ofTechnology
Course IN4303Compiler Construction
Guido Wachsmuth
Compiler Components & GeneratorsTraditional Parsing Algorithms
lessons learned
LR Parsing
Recap: Traditional Parsing Algorithms
How can we parse context-free languages effectively?
• predictive parsing
Which grammar classes are supported by these algorithms?
• LL(k) grammars, LL(k) languages
How can we generate compiler tools from that?
• implement automaton
• generate parse tables
2
today’s lecture
Lexical Analysis
Overview
3
today’s lecture
Lexical Analysis
Overview
efficient parsing algorithms
• LR parsing
• LR parse table generation
• SLR & LALR parse tables
3
today’s lecture
Lexical Analysis
Overview
efficient parsing algorithms
• LR parsing
• LR parse table generation
• SLR & LALR parse tables
3
LR Parsing
LR parsing
I
4
idea
LR Parsing
LR parsing
problems with LL parsing
• predicting right rule
• left recursion
LR parsing
• see whole left-hand side of a rule
• look ahead
• shift or reduce
5
example
LR Parsing
LR parsing
6
* 3 $
input
$
stack
7* 37 +
example
LR Parsing
LR parsing
6
* 3 $$ 7* 37 +
example
LR Parsing
LR parsing
6
* 3 $$ 7* 37 +
example
LR Parsing
LR parsing
6
* 3 $$ 7* 37 +
* 3 $7+$ E 3*
example
LR Parsing
LR parsing
6
* 3 $$ 7* 37 +
* 3 $7+$ E 3*
example
LR Parsing
LR parsing
6
* 3 $$ 7* 37 +
* 3 $7+$ E 3*
example
LR Parsing
LR parsing
6
* 3 $$ 7* 37 +
* 3 $7+$ E 3*
* 3 $7+$ E * E
example
LR Parsing
LR parsing
6
* 3 $$ 7* 37 +
* 3 $7+$ E 3*
* 3 $7+$ E * E
* 3 $7+$ E
example
LR Parsing
LR parsing
6
* 3 $$ 7* 37 +
* 3 $7+$ E 3*
* 3 $7+$ E * E
* 3 $7+$ E
example
LR Parsing
LR parsing
6
* 3 $$ 7* 37 +
* 3 $7+$ E 3*
* 3 $7+$ E * E
* 3 $7+$ E
example
LR Parsing
LR parsing
6
* 3 $$ 7* 37 +
* 3 $7+$ E 3*
* 3 $7+$ E * E
* 3 $7+$ E
$ E + E 3* $
example
LR Parsing
LR parsing
6
* 3 $$ 7* 37 +
* 3 $7+$ E 3*
* 3 $7+$ E * E
* 3 $7+$ E
$ E + E 3* $
example
LR Parsing
LR parsing
6
* 3 $$ 7* 37 +
* 3 $7+$ E 3*
* 3 $7+$ E * E
* 3 $7+$ E
$ E + E 3* $
example
LR Parsing
LR parsing
6
* 3 $$ 7* 37 +
* 3 $7+$ E 3*
* 3 $7+$ E * E
* 3 $7+$ E
$ E + E 3* $
$ E + E * E $
example
LR Parsing
LR parsing
6
* 3 $$ 7* 37 +
* 3 $7+$ E 3*
* 3 $7+$ E * E
* 3 $7+$ E
$ E + E 3* $
$ E + E
$ E + E * E $
$
example
LR Parsing
LR parsing
6
* 3 $$ 7* 37 +
* 3 $7+$ E 3*
* 3 $7+$ E * E
* 3 $7+$ E
$ E + E 3* $
$ E + E
$ E + E * E $
$
$ E $
example
LR Parsing
LR parsing
6
* 3 $$ 7* 37 +
* 3 $7+$ E 3*
* 3 $7+$ E * E
* 3 $7+$ E
$ E + E 3* $
$ E + E
$ E + E * E $
$
$ E $
example
LR Parsing
LR parsing
6
* 3 $$ 7* 37 +
* 3 $7+$ E 3*
* 3 $7+$ E * E
* 3 $7+$ E
$ E + E 3* $
$ E + E
$ E + E * E $
$
$ E $
$ S
LR Parsing
Grammar classes
7
context-free grammars
LL(k)
LL(1)
LL(0)
LR Parsing
Grammar classes
7
context-free grammars
LR(0)
LL(k)
LL(1)
LL(0)
LR Parsing
Grammar classes
7
context-free grammars
LR(1)
LR(0)
LL(k)
LL(1)
LL(0)
LR Parsing
Grammar classes
7
context-free grammars
LR(k)
LR(1)
LR(0)
LL(k)
LL(1)
LL(0)
LR Parsing
Grammar classes
7
context-free grammars
LR(k)
LR(1)
SLR
LR(0)
LL(k)
LL(1)
LL(0)
LR Parsing
Grammar classes
7
context-free grammars
LR(k)
LR(1)
LALR(1)
SLR
LR(0)
LL(k)
LL(1)
LL(0)
LR Parsing
LR parse tables
II
8
parse table
LR Parsing 9
rows
• states of a DFA
columns
• topmost stack symbol
• Σ, N
entries
• reduce, goto state
• shift, goto state
• goto state
LR parsing
T1 ... N1 ...
1 s 3
2 g 5
3 r 1
4 r 2
5
6 g 1
7 s 1
8
...
items, closure & goto
LR Parsing
LR(0) parse tables
10
S → x S → ( L ) L → SL → L , S
S’ → . S $
items, closure & goto
LR Parsing
LR(0) parse tables
10
S → x S → ( L ) L → SL → L , S
S’ → . S $
items, closure & goto
LR Parsing
LR(0) parse tables
10
item
S → x S → ( L ) L → SL → L , S
closure
• for every item A → α . X β
• for every rule X → γ
• add item X → . γ
S’ → . S $
items, closure & goto
LR Parsing
LR(0) parse tables
10
item
S → x S → ( L ) L → SL → L , S
S’ → . S $S → . x S → . ( L )
closure
• for every item A → α . X β
• for every rule X → γ
• add item X → . γ
items, closure & goto
LR Parsing
LR(0) parse tables
10
S → x S → ( L ) L → SL → L , S
S’ → . S $S → . x S → . ( L )
items, closure & goto
LR Parsing
LR(0) parse tables
10
S → x S → ( L ) L → SL → L , S
S’ → . S $S → . x S → . ( L )
items, closure & goto
LR Parsing
LR(0) parse tables
10
S’ → S . $
S S → x S → ( L ) L → SL → L , S
S’ → . S $S → . x S → . ( L )
items, closure & goto
LR Parsing
LR(0) parse tables
10
S’ → S . $
S
x S → x .
S → x S → ( L ) L → SL → L , S
S’ → . S $S → . x S → . ( L )
items, closure & goto
LR Parsing
LR(0) parse tables
10
S’ → S . $
S
x S → x .
( S → ( . L )
S → x S → ( L ) L → SL → L , S
S’ → . S $S → . x S → . ( L )
items, closure & goto
LR Parsing
LR(0) parse tables
10
S’ → S . $
S
x S → x .
( S → ( . L ) L → . SL → . L , SS → . x S → . ( L )
S → x S → ( L ) L → SL → L , S
S’ → . S $S → . x S → . ( L )
items, closure & goto
LR Parsing
LR(0) parse tables
10
S’ → S . $
S
x S → x .
( S → ( . L ) L → . SL → . L , SS → . x S → . ( L )
x
S → x S → ( L ) L → SL → L , S
S’ → . S $S → . x S → . ( L )
items, closure & goto
LR Parsing
LR(0) parse tables
10
S’ → S . $
S
x S → x .
( S → ( . L ) L → . SL → . L , SS → . x S → . ( L )
x
( S → x S → ( L ) L → SL → L , S
S’ → . S $S → . x S → . ( L )
items, closure & goto
LR Parsing
LR(0) parse tables
10
S’ → S . $
S
x S → x .
( S → ( . L ) L → . SL → . L , SS → . x S → . ( L )
x
(
S
L → S .
S → x S → ( L ) L → SL → L , S
S’ → . S $S → . x S → . ( L )
items, closure & goto
LR Parsing
LR(0) parse tables
10
S’ → S . $
S
x S → x .
( S → ( . L ) L → . SL → . L , SS → . x S → . ( L )
x
(
S
L → S .
L S → ( L . ) L → L . , S
S → x S → ( L ) L → SL → L , S
S’ → . S $S → . x S → . ( L )
items, closure & goto
LR Parsing
LR(0) parse tables
10
S’ → S . $
S
x S → x .
( S → ( . L ) L → . SL → . L , SS → . x S → . ( L )
x
(
S
L → S .
L S → ( L . ) L → L . , S
)
S → ( L ) .
S → x S → ( L ) L → SL → L , S
S’ → . S $S → . x S → . ( L )
items, closure & goto
LR Parsing
LR(0) parse tables
10
S’ → S . $
S
x S → x .
( S → ( . L ) L → . SL → . L , SS → . x S → . ( L )
x
(
S
L → S .
L S → ( L . ) L → L . , S
)
S → ( L ) .
,L → L , . S
S → x S → ( L ) L → SL → L , S
S’ → . S $S → . x S → . ( L )
L → L , . S S → . x S → . ( L )
items, closure & goto
LR Parsing
LR(0) parse tables
10
S’ → S . $
S
x S → x .
( S → ( . L ) L → . SL → . L , SS → . x S → . ( L )
x
(
S
L → S .
L S → ( L . ) L → L . , S
)
S → ( L ) .
,
S → x S → ( L ) L → SL → L , S
S’ → . S $S → . x S → . ( L )
L → L , . S S → . x S → . ( L )
items, closure & goto
LR Parsing
LR(0) parse tables
10
S’ → S . $
S
x S → x .
( S → ( . L ) L → . SL → . L , SS → . x S → . ( L )
x
(
S
L → S .
L S → ( L . ) L → L . , S
)
S → ( L ) .
,
x
S → x S → ( L ) L → SL → L , S
S’ → . S $S → . x S → . ( L )
L → L , . S S → . x S → . ( L )
items, closure & goto
LR Parsing
LR(0) parse tables
10
S’ → S . $
S
x S → x .
( S → ( . L ) L → . SL → . L , SS → . x S → . ( L )
x
(
S
L → S .
L S → ( L . ) L → L . , S
)
S → ( L ) .
,
x
(
S → x S → ( L ) L → SL → L , S
S’ → . S $S → . x S → . ( L )
L → L , . S S → . x S → . ( L )
items, closure & goto
LR Parsing
LR(0) parse tables
10
S’ → S . $
S
x S → x .
( S → ( . L ) L → . SL → . L , SS → . x S → . ( L )
x
(
S
L → S .
L S → ( L . ) L → L . , S
)
S → ( L ) .
,
x
(
SL → L , S .
S → x S → ( L ) L → SL → L , S
S’ → . S $S → . x S → . ( L )
L → L , . S S → . x S → . ( L )
items, closure & goto
LR Parsing
LR(0) parse tables
10
S’ → S . $
S
x S → x .
( S → ( . L ) L → . SL → . L , SS → . x S → . ( L )
x
(
S
L → S .
L S → ( L . ) L → L . , S
)
S → ( L ) .
,
x
(
SL → L , S .
S → x S → ( L ) L → SL → L , S
12
3
4 6 7
5
8
9
( ) x , $ S L
1 s 3 s 2 g 4
2 r 1 r 1 r 1 r 1 r 1
3 s 3 s 2 g 6 g 5
4 a
5 s 7 s 8
6 r 3 r 3 r 3 r 3 r 3
7 r 2 r 2 r 2 r 2 r 2
8 s 3 s 2 g 9
9 r 4 r 4 r 4 r 4 r 4
result
LR Parsing 11
LR(0) parse tables
S → x S → ( L ) L → SL → L , S
( ) x , $ S L
1 s 3 s 2 g 4
2 r 1 r 1 r 1 r 1 r 1
3 s 3 s 2 g 6 g 5
4 a
5 s 7 s 8
6 r 3 r 3 r 3 r 3 r 3
7 r 2 r 2 r 2 r 2 r 2
8 s 3 s 2 g 9
9 r 4 r 4 r 4 r 4 r 4
result
LR Parsing 11
LR(0) parse tables
S → x S → ( L ) L → SL → L , S
$)x,x(
1
( ) x , $ S L
1 s 3 s 2 g 4
2 r 1 r 1 r 1 r 1 r 1
3 s 3 s 2 g 6 g 5
4 a
5 s 7 s 8
6 r 3 r 3 r 3 r 3 r 3
7 r 2 r 2 r 2 r 2 r 2
8 s 3 s 2 g 9
9 r 4 r 4 r 4 r 4 r 4
result
LR Parsing 11
LR(0) parse tables
S → x S → ( L ) L → SL → L , S
$)x,x
13
( ) x , $ S L
1 s 3 s 2 g 4
2 r 1 r 1 r 1 r 1 r 1
3 s 3 s 2 g 6 g 5
4 a
5 s 7 s 8
6 r 3 r 3 r 3 r 3 r 3
7 r 2 r 2 r 2 r 2 r 2
8 s 3 s 2 g 9
9 r 4 r 4 r 4 r 4 r 4
result
LR Parsing 11
LR(0) parse tables
S → x S → ( L ) L → SL → L , S
$)x,
132
( ) x , $ S L
1 s 3 s 2 g 4
2 r 1 r 1 r 1 r 1 r 1
3 s 3 s 2 g 6 g 5
4 a
5 s 7 s 8
6 r 3 r 3 r 3 r 3 r 3
7 r 2 r 2 r 2 r 2 r 2
8 s 3 s 2 g 9
9 r 4 r 4 r 4 r 4 r 4
result
LR Parsing 11
LR(0) parse tables
S → x S → ( L ) L → SL → L , S
$)x,
13
( ) x , $ S L
1 s 3 s 2 g 4
2 r 1 r 1 r 1 r 1 r 1
3 s 3 s 2 g 6 g 5
4 a
5 s 7 s 8
6 r 3 r 3 r 3 r 3 r 3
7 r 2 r 2 r 2 r 2 r 2
8 s 3 s 2 g 9
9 r 4 r 4 r 4 r 4 r 4
result
LR Parsing 11
LR(0) parse tables
S → x S → ( L ) L → SL → L , S
$)x,
136
( ) x , $ S L
1 s 3 s 2 g 4
2 r 1 r 1 r 1 r 1 r 1
3 s 3 s 2 g 6 g 5
4 a
5 s 7 s 8
6 r 3 r 3 r 3 r 3 r 3
7 r 2 r 2 r 2 r 2 r 2
8 s 3 s 2 g 9
9 r 4 r 4 r 4 r 4 r 4
result
LR Parsing 11
LR(0) parse tables
S → x S → ( L ) L → SL → L , S
$)x,
13
( ) x , $ S L
1 s 3 s 2 g 4
2 r 1 r 1 r 1 r 1 r 1
3 s 3 s 2 g 6 g 5
4 a
5 s 7 s 8
6 r 3 r 3 r 3 r 3 r 3
7 r 2 r 2 r 2 r 2 r 2
8 s 3 s 2 g 9
9 r 4 r 4 r 4 r 4 r 4
result
LR Parsing 11
LR(0) parse tables
S → x S → ( L ) L → SL → L , S
$)x,
135
( ) x , $ S L
1 s 3 s 2 g 4
2 r 1 r 1 r 1 r 1 r 1
3 s 3 s 2 g 6 g 5
4 a
5 s 7 s 8
6 r 3 r 3 r 3 r 3 r 3
7 r 2 r 2 r 2 r 2 r 2
8 s 3 s 2 g 9
9 r 4 r 4 r 4 r 4 r 4
result
LR Parsing 11
LR(0) parse tables
S → x S → ( L ) L → SL → L , S
$)x
1358
( ) x , $ S L
1 s 3 s 2 g 4
2 r 1 r 1 r 1 r 1 r 1
3 s 3 s 2 g 6 g 5
4 a
5 s 7 s 8
6 r 3 r 3 r 3 r 3 r 3
7 r 2 r 2 r 2 r 2 r 2
8 s 3 s 2 g 9
9 r 4 r 4 r 4 r 4 r 4
result
LR Parsing 11
LR(0) parse tables
S → x S → ( L ) L → SL → L , S
$)
13582
( ) x , $ S L
1 s 3 s 2 g 4
2 r 1 r 1 r 1 r 1 r 1
3 s 3 s 2 g 6 g 5
4 a
5 s 7 s 8
6 r 3 r 3 r 3 r 3 r 3
7 r 2 r 2 r 2 r 2 r 2
8 s 3 s 2 g 9
9 r 4 r 4 r 4 r 4 r 4
result
LR Parsing 11
LR(0) parse tables
S → x S → ( L ) L → SL → L , S
$)
1358
( ) x , $ S L
1 s 3 s 2 g 4
2 r 1 r 1 r 1 r 1 r 1
3 s 3 s 2 g 6 g 5
4 a
5 s 7 s 8
6 r 3 r 3 r 3 r 3 r 3
7 r 2 r 2 r 2 r 2 r 2
8 s 3 s 2 g 9
9 r 4 r 4 r 4 r 4 r 4
result
LR Parsing 11
LR(0) parse tables
S → x S → ( L ) L → SL → L , S
$)
13589
( ) x , $ S L
1 s 3 s 2 g 4
2 r 1 r 1 r 1 r 1 r 1
3 s 3 s 2 g 6 g 5
4 a
5 s 7 s 8
6 r 3 r 3 r 3 r 3 r 3
7 r 2 r 2 r 2 r 2 r 2
8 s 3 s 2 g 9
9 r 4 r 4 r 4 r 4 r 4
result
LR Parsing 11
LR(0) parse tables
S → x S → ( L ) L → SL → L , S
$)
13
( ) x , $ S L
1 s 3 s 2 g 4
2 r 1 r 1 r 1 r 1 r 1
3 s 3 s 2 g 6 g 5
4 a
5 s 7 s 8
6 r 3 r 3 r 3 r 3 r 3
7 r 2 r 2 r 2 r 2 r 2
8 s 3 s 2 g 9
9 r 4 r 4 r 4 r 4 r 4
result
LR Parsing 11
LR(0) parse tables
S → x S → ( L ) L → SL → L , S
$)
135
( ) x , $ S L
1 s 3 s 2 g 4
2 r 1 r 1 r 1 r 1 r 1
3 s 3 s 2 g 6 g 5
4 a
5 s 7 s 8
6 r 3 r 3 r 3 r 3 r 3
7 r 2 r 2 r 2 r 2 r 2
8 s 3 s 2 g 9
9 r 4 r 4 r 4 r 4 r 4
result
LR Parsing 11
LR(0) parse tables
S → x S → ( L ) L → SL → L , S
$
1357
( ) x , $ S L
1 s 3 s 2 g 4
2 r 1 r 1 r 1 r 1 r 1
3 s 3 s 2 g 6 g 5
4 a
5 s 7 s 8
6 r 3 r 3 r 3 r 3 r 3
7 r 2 r 2 r 2 r 2 r 2
8 s 3 s 2 g 9
9 r 4 r 4 r 4 r 4 r 4
result
LR Parsing 11
LR(0) parse tables
S → x S → ( L ) L → SL → L , S
$
1
( ) x , $ S L
1 s 3 s 2 g 4
2 r 1 r 1 r 1 r 1 r 1
3 s 3 s 2 g 6 g 5
4 a
5 s 7 s 8
6 r 3 r 3 r 3 r 3 r 3
7 r 2 r 2 r 2 r 2 r 2
8 s 3 s 2 g 9
9 r 4 r 4 r 4 r 4 r 4
result
LR Parsing 11
LR(0) parse tables
S → x S → ( L ) L → SL → L , S
$
14
LR Parsing
conflict resolution
III
12
E → T + . E E → . T + EE → . TT → . x
S → . E $E → . T + E E → . T T → . x
shift-reduce conflicts
LR Parsing
SLR parse tables
13
T → x .
x
E S → E . $
T
T +
E
E → T . + E E → T .
E → T + E .
E → T + E E → T T → xx
E → T + . E E → . T + EE → . TT → . x
S → . E $E → . T + E E → . T T → . x
shift-reduce conflicts
LR Parsing
SLR parse tables
13
T → x .
x
E S → E . $
T
T +
E
E → T . + E E → T .
E → T + E .
E → T + E E → T T → x
1
2
3
5 4 6x
E → T + . E E → . T + EE → . TT → . x
S → . E $E → . T + E E → . T T → . x
shift-reduce conflicts
LR Parsing
SLR parse tables
13
T → x .
x
E S → E . $
T
T +
E
E → T . + E E → T .
E → T + E .
E → T + E E → T T → x
1
2
3
5 4 6x
x + $ E T1 s 5 g 2 g 32 a3 r 2 ? r 24 s 5 g 6 g 35 r 3 r 3 r 36 r 1 r 1 r 1
E → T + . E E → . T + EE → . TT → . x
S → . E $E → . T + E E → . T T → . x
shift-reduce conflicts
LR Parsing
SLR parse tables
13
T → x .
x
E S → E . $
T
T +
E
E → T . + E E → T .
E → T + E .
E → T + E E → T T → x
1
2
3
5 4 6x
x + $ E T1 s 5 g 2 g 32 a3 s 4 r 24 s 5 g 6 g 35 r 3 r 36 r 1
look-ahead
LR Parsing
LR(1) parse tables
14
E → T + E E → T T → x
S → . E $E → . T + E E → . T T → . x
?$$+ $
E S → E . $ ?
T E → T . + E E → T .
$$
T → x .
x
+ $
T +
x
E → T + . E E → . T + EE → . TT → . x
$$$+ $ E E → T + E . $
look-ahead
LR Parsing
LR(1) parse tables
14
E → T + E E → T T → x
S → . E $E → . T + E E → . T T → . x
?$$+ $
E S → E . $ ?
T E → T . + E E → T .
$$
T → x .
x
+ $
T +
x
E → T + . E E → . T + EE → . TT → . x
$$$+ $ E E → T + E . $
x + $ E T1 s 5 g 2 g 32 a3 s 4 r 24 s 5 g 6 g 35 r 3 r 36 r 1
state space reduction
LR Parsing
LALR(1) parse tables
unify states
• with same items
• and same outgoing transitions
• but different look-ahead sets
might introduce new conflicts
15
LR Parsing
summary
IV
16
lessons learned
LR Parsing
Summary
17
lessons learned
LR Parsing
Summary
How can we generate LR parse tables?
• items, closure, goto
17
lessons learned
LR Parsing
Summary
How can we generate LR parse tables?
• items, closure, goto
How can we improve LR(0) parse table generation?
• SLR: consider FOLLOW sets to avoid shift-reduce conflicts
• LR(1): consider look-ahead in states
• LALR(1): unify LR(1) states to reduce state space
17
lessons learned
LR Parsing
Summary
How can we generate LR parse tables?
• items, closure, goto
How can we improve LR(0) parse table generation?
• SLR: consider FOLLOW sets to avoid shift-reduce conflicts
• LR(1): consider look-ahead in states
• LALR(1): unify LR(1) states to reduce state space
Why are efficient parsing algorithms problematic?
• not longer pure, declarative, beautiful
• paradise lost: seven plagues
• paradise regained: scannerless generalised parsing
17
lessons learned
LR Parsing
Summary
How can we generate LR parse tables?
• items, closure, goto
How can we improve LR(0) parse table generation?
• SLR: consider FOLLOW sets to avoid shift-reduce conflicts
• LR(1): consider look-ahead in states
• LALR(1): unify LR(1) states to reduce state space
Why are efficient parsing algorithms problematic?
• not longer pure, declarative, beautiful
• paradise lost: seven plagues
• paradise regained: scannerless generalised parsing
17
learn more
LR Parsing
Literature
18
learn more
LR Parsing
Literature
syntactical analysis
Andrew W. Appel, Jens Palsberg: Modern Compiler Implementation in Java, 2nd edition. 2002
Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman, Monica S. Lam: Compilers: Principles, Techniques, and Tools, 2nd edition. 2006
18
learn more
LR Parsing
Literature
syntactical analysis
Andrew W. Appel, Jens Palsberg: Modern Compiler Implementation in Java, 2nd edition. 2002
Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman, Monica S. Lam: Compilers: Principles, Techniques, and Tools, 2nd edition. 2006
generalised parsing
Eelco Visser: Syntax Definition for Language Prototyping. PhD thesis 1997
M.G.J. van den Brand, J. Scheerder, J.J. Vinju, and E. Visser: Disambiguation Filters for Scannerless Generalized LR Parsers. CC 2002
Lennart C. L. Kats, Eelco Visser, Guido Wachsmuth: Pure and Declarative Syntax Definition - Paradise Lost and Regained. SPLASH 2010
18
coming next
LR Parsing
Outlook
lectures
• guest lecture: DSLs
Question & Answer Jan 08
• 10 questions, submit & vote
Lab Dec 14
• translate fields & variables
• challenge: variable ranges
19
LR Parsing
copyrights
20
LR Parsing 21
copyrights
LR Parsing
Pictures
Slide 1: Book Scanner by Ben Woosley, some rights reserved
Slide 19: Ostsee by Mario Thiel, some rights reserved
22