Example 1:
Parsing of the input string id * id + id using the SLR parser table for the grammar
1. E → E + T
2. E → T
3. T → T * F
4. T → F
5. F → ( E )
6. F → id
Stack
|
Input
|
Next
| |
1
|
0
|
id * id + id $
|
Shift
|
2
|
0 id5
|
* id + id $
|
reduce by F →id
|
3
|
0 F3
|
* id + id $
|
reduce by T → F
|
4
|
0 T2
|
* id + id $
|
shift
|
5
|
0 T2 * 7
|
id + id $
|
shift
|
6
|
0 T2 * 7 id 5
|
+ id $
|
Reduce by F → id
|
7
|
0 T2 * 7 F 10
|
+ id $
|
Reduce by T → T * F
|
8
|
0 T2
|
+ id $
|
Reduce by E → T
|
9
|
0 E 1
|
+ id $
|
Shift
|
10
|
0 E 1 + 6
|
id $
|
Shift
|
11
|
0 E1 + 6 id 5
|
i $
|
Reduce by F → id
|
12
|
0 E1 + 6 F 3
|
$
|
Reduce by T → F
|
13
|
0 E1 + 6 T 9
|
$
|
E → E + T
|
14
|
0 E1
|
$
|
Accept
|
Example 2:
Construct SLR parser for S → (S)S | ε
The augmented grammar is, S’ → S S → (S)S S → ε
The canonical collection of LR(0) items are
I0:
S’ → .S
S → .(S)
S’ → .
I1:
S’ → S.
I2:
S → (.S)S
S → .(S)S
S → .
I3:
S → (S.)S
I4:
S → (S).S
S → .(S)S
S → .
I5:
S → (S)S.
DFA from Canonical collection of LR(0) items:
The GOTO function of the canonical collection of set of items defines a DFA that recognizes the viable prefixes of the grammar
Each set of item becomes a state in the DFA
The DFA for the example 2 from its items is
States
|
ACTION
|
GOTO
| ||
(
|
)
|
$
|
S
| |
0
|
S2
|
r2
|
r2
|
1
|
1
|
Accept
|
-
| ||
2
|
S2
|
r2
|
r2
|
3
|
3
|
S4
| |||
4
|
S2
|
r2
|
r2
|
5
|
5
|
r1
|
r1
|
Parsing the Input String for Example 2
Stack
|
Input String
|
Action
|
$ 0
|
( ) $
|
Shift
|
$ 0 ( 2 ) $
|
) $
|
Reduce S → E, goto[2, S] = 3
|
$ 0 ( 2 S 3
|
) $
|
Shift
|
$ 0 ( 2 S 3 ) 4
|
$
|
Reduce S → E, goto[4, S] = 5
|
$ 0 ( 2 S 3 ) 4 S 5
|
$
|
Reduce S → (S)S, goto[0, S] = 1
|
$ 0 S 1
|
$
|
Accept
|
Example 3:
Construct SLR Parser for S→ CC, C → Cc | d
Example 4:
Show that the grammar S → xAy | xBy | xAz A → qS | q B → q is not SLR(1)
Example 5:
Show that the grammar S → 0S0 | 1S1 | 10 is not SLR(1)
Example 6:
Show that the grammar S → AaAb | BbBa A → ε is not SLR(1)
Example 7:
Show that the grammar S → AS | b A → SA | a is not SLR(1)
Example 8:
Show that S → L = R | R the grammar is not SLR(1),
L → * R |id
R → L
0 comments:
Post a Comment