Professional Documents
Culture Documents
parsers
[A ! X Y Z; ] )
would be valid
[A ! X Y Z; ] ) [Y ! ;
] & [Y ! ; ]
are also valid, where
; 2 FIRST(Z)
recognizing Y takes parser to [A ! XY Z; ]
I represents all the simultaneously valid states
j
CPSC 434
LR(1)
parser example
The Grammar
1
2
3
::=
::=
T+E
T
id
0
1
2
3
Symbol
S0
E
T
CPSC 434
S0
E
::=
::=
::=
FIRST
f id g
f id g
f id g
E
T+E
T
id
FOLLOW
f eof g
f eof g
f +, eof g
[ E ::= T + E , $ ],
[ E ::= T , $ ],
[ T ::= id , + ]
[ T ::= id , $ ]
FIRST( $ ) = $
FIRST( $ ) = $
FIRST( + E $ ) = +
FIRST( $ ) = $
S1: [ S0 ::= E , $ ]
S2: [ E ::= T + E , $ ],
[ E ::= T , $ ]
S3: [ T ::= id , + ]
[ T ::= id , $ ]
S4: [ E ::= T + E , $ ],
[ E ::= T + E , $ ],
[ E ::= T , $ ],
[ T ::= id , + ]
[ T ::= id , $ ]
FIRST( $ ) = $
FIRST( $ ) = $
FIRST( + E $ ) = +
FIRST( $ ) = $
S5: [ E ::= T + E , $ ]
CPSC 434
S0
closure ( f[ S ::= E ]g )
Iteration 1
goto(S0; E ) = S1
goto(S0; T ) = S2
goto(S0, id) = S3
Iteration 2
goto(S2, +) = S4
Iteration 3
goto(S4, id) = S3
goto(S4; E ) = S5
goto(S4; T ) = S2
CPSC 434
0
1
2
3
S0
S1
S2
S3
S4
S5
id
S0
E
::=
::=
::=
ACTION
+
E
T+E
T
id
$
shift 3 |
|
|
|
accept
| shift 4 reduce 2
| reduce 3 reduce 3
shift 3 |
|
|
| reduce 1
GOTO
expr
1
|
|
|
5
|
term
2
|
|
|
2
|
LR(0)
SLR(1)
LR(1)
CPSC 434
Reduce-Reduce
[ A ::= , ]
[ B ::=
, ]
[ A ::= , ]
[ B ::= , ]
con ict
con ict
FOLLOW(A)
FOLLOW(A)
FIRST( )
FOLLOW(B)
\ FIRST( )
\
Lecture 12, Page 6
SLR(1)
parsing example
The Grammar
S0
G
E
T
::=
::=
::=
::=
G
E = E j id
E+Tj T
T * f j id
S0: [ S0 ::= G ]
[ G ::= E = E ]
[ G ::= id ]
[ E ::= E + T ]
[ E ::= T ]
[ T ::= T * id ]
[ T ::= id ]
S1: [ G ::= id ]
[ T ::= id ]
FOLLOW(G) = f $ g
FOLLOW(T) = f $, *, +, = g
LR(1)
parsing example
The Grammar
S0
G
E
T
::=
::=
::=
::=
G
E = E j id
E+Tj T
T * id j id
S0: [ S0 ::= G , f $ g ]
[ G ::= E = E , f $ g ]
[ G ::= id , f $ g ]
[ E ::= E + T , f =, + g ]
[ E ::= T , f =, + g ]
[ T ::= T * id , f =, +, * g ]
[ T ::= id , f =, +, * g ]
S1: [ G ::= id , f $ g ]
[ T ::= id , f =,
+, * g
LALR(1)
parsing
lookahead in states.
CPSC 434
LALR(1)
table construction
merge.
CPSC 434
LALR(1)
table construction
LALR(1)
properties
CPSC 434
LR(k )
languages
SLR(1)
LALR(1)
LR(1)
LR(k)
Grammars
SLR(1) LALR(1)
LR(1) LR(k )
Languages
CPSC 434
S1 > S 2
S 1 = S2
S1 < S 2
Parsing example
The Grammar
E ::= E + E j E * E j id
+
>
>
>
$ <
+
*
id
Stack
$
$ < id
$<E
$<E+
$ < E + < id
$<E+<E
$<E+<E*
$ < E + < E * < id
$<E+<E*E
$<E+E
$<E
CPSC 434
id
id + id * id
+ id * id
+ id * id
id * id
* id
* id
id
$
$
$
$
$
$
$
$
$
$
$
Precedence
$ <
>
$ <
+ <
id >
+ <
* <
id >
* >
+ >
$ >
id
id
+
+
id
*
*
id
$
$
$
$
Parsing review
Recursive Descent A hand coded recursive
CPSC 434
Parsing review
top-down
recursive
descent
LL(1)
operator
precedence
LR(1)
CPSC 434
Advantages
fast
locality
simplicity
error detection
simple method
fast
automatable
simple method
very fast
small table
associativity
fast
det. langs.
early error det.
automatable
associativity
Disadvantages
hand-coded
maintenance
no left recursion
associativity
LL(1) LR(1)
no left recursion
associativity
L(G) 6 = L(parser)
error detection
no ambiguity
working sets
table size
error recovery