SLR States and Table

The following code was generated for the grammar in part 1 of the lab.

The States


**********************************
Gotos[34, "else"] is ambiguous. Filled with a shift or goto

**********************************


State 0
	0 P1 -> !P 
	1 P -> !B "." 
	2 B -> !V S1 
	3 V -> !"var" V1 


State 1
	0 P1 -> P !


State 2
	1 P -> B !"." 


State 3
	2 B -> V !S1 
	8 S1 -> !"ident" ":=" E 
	9 S1 -> !"if" C "then" S1 "else" S1 
	10 S1 -> !"if" C "then" S1 
	11 S1 -> !"while" C "do" S1 
	12 S1 -> !"begin" S "end" 
	13 S1 -> !


State 4
	3 V -> "var" !V1 
	4 V1 -> !"ident" ":" "type" 
	5 V1 -> !"ident" ":" "type" ";" V1 


State 5
	1 P -> B "." !


State 6
	2 B -> V S1 !


State 7
	8 S1 -> "ident" !":=" E 


State 8
	9 S1 -> "if" !C "then" S1 "else" S1 
	10 S1 -> "if" !C "then" S1 
	20 C -> !E "relop" E 
	14 E -> !E "+" T 
	15 E -> !T 
	16 T -> !T "*" F 
	17 T -> !F 
	18 F -> !"(" E ")" 
	19 F -> !"ident" 


State 9
	11 S1 -> "while" !C "do" S1 
	20 C -> !E "relop" E 
	14 E -> !E "+" T 
	15 E -> !T 
	16 T -> !T "*" F 
	17 T -> !F 
	18 F -> !"(" E ")" 
	19 F -> !"ident" 


State 10
	12 S1 -> "begin" !S "end" 
	6 S -> !S1 
	7 S -> !S1 ";" S 
	8 S1 -> !"ident" ":=" E 
	9 S1 -> !"if" C "then" S1 "else" S1 
	10 S1 -> !"if" C "then" S1 
	11 S1 -> !"while" C "do" S1 
	12 S1 -> !"begin" S "end" 
	13 S1 -> !


State 11
	3 V -> "var" V1 !


State 12
	4 V1 -> "ident" !":" "type" 
	5 V1 -> "ident" !":" "type" ";" V1 


State 13
	8 S1 -> "ident" ":=" !E 
	14 E -> !E "+" T 
	15 E -> !T 
	16 T -> !T "*" F 
	17 T -> !F 
	18 F -> !"(" E ")" 
	19 F -> !"ident" 


State 14
	9 S1 -> "if" C !"then" S1 "else" S1 
	10 S1 -> "if" C !"then" S1 


State 15
	20 C -> E !"relop" E 
	14 E -> E !"+" T 


State 16
	15 E -> T !
	16 T -> T !"*" F 


State 17
	17 T -> F !


State 18
	18 F -> "(" !E ")" 
	14 E -> !E "+" T 
	15 E -> !T 
	16 T -> !T "*" F 
	17 T -> !F 
	18 F -> !"(" E ")" 
	19 F -> !"ident" 


State 19
	19 F -> "ident" !


State 20
	11 S1 -> "while" C !"do" S1 


State 21
	12 S1 -> "begin" S !"end" 


State 22
	6 S -> S1 !
	7 S -> S1 !";" S 


State 23
	4 V1 -> "ident" ":" !"type" 
	5 V1 -> "ident" ":" !"type" ";" V1 


State 24
	8 S1 -> "ident" ":=" E !
	14 E -> E !"+" T 


State 25
	9 S1 -> "if" C "then" !S1 "else" S1 
	10 S1 -> "if" C "then" !S1 
	8 S1 -> !"ident" ":=" E 
	9 S1 -> !"if" C "then" S1 "else" S1 
	10 S1 -> !"if" C "then" S1 
	11 S1 -> !"while" C "do" S1 
	12 S1 -> !"begin" S "end" 
	13 S1 -> !


State 26
	20 C -> E "relop" !E 
	14 E -> !E "+" T 
	15 E -> !T 
	16 T -> !T "*" F 
	17 T -> !F 
	18 F -> !"(" E ")" 
	19 F -> !"ident" 


State 27
	14 E -> E "+" !T 
	16 T -> !T "*" F 
	17 T -> !F 
	18 F -> !"(" E ")" 
	19 F -> !"ident" 


State 28
	16 T -> T "*" !F 
	18 F -> !"(" E ")" 
	19 F -> !"ident" 


State 29
	18 F -> "(" E !")" 
	14 E -> E !"+" T 


State 30
	11 S1 -> "while" C "do" !S1 
	8 S1 -> !"ident" ":=" E 
	9 S1 -> !"if" C "then" S1 "else" S1 
	10 S1 -> !"if" C "then" S1 
	11 S1 -> !"while" C "do" S1 
	12 S1 -> !"begin" S "end" 
	13 S1 -> !


State 31
	12 S1 -> "begin" S "end" !


State 32
	7 S -> S1 ";" !S 
	6 S -> !S1 
	7 S -> !S1 ";" S 
	8 S1 -> !"ident" ":=" E 
	9 S1 -> !"if" C "then" S1 "else" S1 
	10 S1 -> !"if" C "then" S1 
	11 S1 -> !"while" C "do" S1 
	12 S1 -> !"begin" S "end" 
	13 S1 -> !


State 33
	4 V1 -> "ident" ":" "type" !
	5 V1 -> "ident" ":" "type" !";" V1 


State 34
	9 S1 -> "if" C "then" S1 !"else" S1 
	10 S1 -> "if" C "then" S1 !


State 35
	20 C -> E "relop" E !
	14 E -> E !"+" T 


State 36
	14 E -> E "+" T !
	16 T -> T !"*" F 


State 37
	16 T -> T "*" F !


State 38
	18 F -> "(" E ")" !


State 39
	11 S1 -> "while" C "do" S1 !


State 40
	7 S -> S1 ";" S !


State 41
	5 V1 -> "ident" ":" "type" ";" !V1 
	4 V1 -> !"ident" ":" "type" 
	5 V1 -> !"ident" ":" "type" ";" V1 


State 42
	9 S1 -> "if" C "then" S1 "else" !S1 
	8 S1 -> !"ident" ":=" E 
	9 S1 -> !"if" C "then" S1 "else" S1 
	10 S1 -> !"if" C "then" S1 
	11 S1 -> !"while" C "do" S1 
	12 S1 -> !"begin" S "end" 
	13 S1 -> !


State 43
	5 V1 -> "ident" ":" "type" ";" V1 !


State 44
	9 S1 -> "if" C "then" S1 "else" S1 !


The SLR Table

Any location not listed is an error node.

GoTo Table
0 1 P goto 1 2 B goto 2 4 V goto 3 6 "var" 	shift 4
 
1 30 $ accept 1 
2 3 "." 	shift 5
 
3 3 "." 		reduce by 13 S1 -> 
 5 S1 goto 6 8 "ident" 	shift 7
 11 ";" 		reduce by 13 S1 -> 
 15 "if" 	shift 8
 18 "else" 		reduce by 13 S1 -> 
 19 "while" 	shift 9
 21 "begin" 	shift 10
 22 "end" 		reduce by 13 S1 -> 
 
4 7 V1 goto 11 8 "ident" 	shift 12
 
5 30 $ 		reduce by 1 P -> B "." 
 
6 3 "." 		reduce by 2 B -> V S1 
 
7 13 ":=" 	shift 13
 
8 8 "ident" 	shift 19
 14 E goto 15 16 C goto 14 24 T goto 16 26 F goto 17 27 "(" 	shift 18
 
9 8 "ident" 	shift 19
 14 E goto 15 16 C goto 20 24 T goto 16 26 F goto 17 27 "(" 	shift 18
 
10 3 "." 		reduce by 13 S1 -> 
 5 S1 goto 22 8 "ident" 	shift 7
 11 ";" 		reduce by 13 S1 -> 
 12 S goto 21 15 "if" 	shift 8
 18 "else" 		reduce by 13 S1 -> 
 19 "while" 	shift 9
 21 "begin" 	shift 10
 22 "end" 		reduce by 13 S1 -> 
 
11 3 "." 		reduce by 3 V -> "var" V1 
 8 "ident" 		reduce by 3 V -> "var" V1 
 15 "if" 		reduce by 3 V -> "var" V1 
 19 "while" 		reduce by 3 V -> "var" V1 
 21 "begin" 		reduce by 3 V -> "var" V1 
 
12 9 ":" 	shift 23
 
13 8 "ident" 	shift 19
 14 E goto 24 24 T goto 16 26 F goto 17 27 "(" 	shift 18
 
14 17 "then" 	shift 25
 
15 23 "+" 	shift 27
 29 "relop" 	shift 26
 
16 3 "." 		reduce by 15 E -> T 
 11 ";" 		reduce by 15 E -> T 
 17 "then" 		reduce by 15 E -> T 
 18 "else" 		reduce by 15 E -> T 
 20 "do" 		reduce by 15 E -> T 
 22 "end" 		reduce by 15 E -> T 
 23 "+" 		reduce by 15 E -> T 
 25 "*" 	shift 28
 28 ")" 		reduce by 15 E -> T 
 29 "relop" 		reduce by 15 E -> T 
 
17 3 "." 		reduce by 17 T -> F 
 11 ";" 		reduce by 17 T -> F 
 17 "then" 		reduce by 17 T -> F 
 18 "else" 		reduce by 17 T -> F 
 20 "do" 		reduce by 17 T -> F 
 22 "end" 		reduce by 17 T -> F 
 23 "+" 		reduce by 17 T -> F 
 25 "*" 		reduce by 17 T -> F 
 28 ")" 		reduce by 17 T -> F 
 29 "relop" 		reduce by 17 T -> F 
 
18 8 "ident" 	shift 19
 14 E goto 29 24 T goto 16 26 F goto 17 27 "(" 	shift 18
 
19 3 "." 		reduce by 19 F -> "ident" 
 11 ";" 		reduce by 19 F -> "ident" 
 17 "then" 		reduce by 19 F -> "ident" 
 18 "else" 		reduce by 19 F -> "ident" 
 20 "do" 		reduce by 19 F -> "ident" 
 22 "end" 		reduce by 19 F -> "ident" 
 23 "+" 		reduce by 19 F -> "ident" 
 25 "*" 		reduce by 19 F -> "ident" 
 28 ")" 		reduce by 19 F -> "ident" 
 29 "relop" 		reduce by 19 F -> "ident" 
 
20 20 "do" 	shift 30
 
21 22 "end" 	shift 31
 
22 11 ";" 	shift 32
 22 "end" 		reduce by 6 S -> S1 
 
23 10 "type" 	shift 33
 
24 3 "." 		reduce by 8 S1 -> "ident" ":=" E 
 11 ";" 		reduce by 8 S1 -> "ident" ":=" E 
 18 "else" 		reduce by 8 S1 -> "ident" ":=" E 
 22 "end" 		reduce by 8 S1 -> "ident" ":=" E 
 23 "+" 	shift 27
 
25 3 "." 		reduce by 13 S1 -> 
 5 S1 goto 34 8 "ident" 	shift 7
 11 ";" 		reduce by 13 S1 -> 
 15 "if" 	shift 8
 18 "else" 		reduce by 13 S1 -> 
 19 "while" 	shift 9
 21 "begin" 	shift 10
 22 "end" 		reduce by 13 S1 -> 
 
26 8 "ident" 	shift 19
 14 E goto 35 24 T goto 16 26 F goto 17 27 "(" 	shift 18
 
27 8 "ident" 	shift 19
 24 T goto 36 26 F goto 17 27 "(" 	shift 18
 
28 8 "ident" 	shift 19
 26 F goto 37 27 "(" 	shift 18
 
29 23 "+" 	shift 27
 28 ")" 	shift 38
 
30 3 "." 		reduce by 13 S1 -> 
 5 S1 goto 39 8 "ident" 	shift 7
 11 ";" 		reduce by 13 S1 -> 
 15 "if" 	shift 8
 18 "else" 		reduce by 13 S1 -> 
 19 "while" 	shift 9
 21 "begin" 	shift 10
 22 "end" 		reduce by 13 S1 -> 
 
31 3 "." 		reduce by 12 S1 -> "begin" S "end" 
 11 ";" 		reduce by 12 S1 -> "begin" S "end" 
 18 "else" 		reduce by 12 S1 -> "begin" S "end" 
 22 "end" 		reduce by 12 S1 -> "begin" S "end" 
 
32 3 "." 		reduce by 13 S1 -> 
 5 S1 goto 22 8 "ident" 	shift 7
 11 ";" 		reduce by 13 S1 -> 
 12 S goto 40 15 "if" 	shift 8
 18 "else" 		reduce by 13 S1 -> 
 19 "while" 	shift 9
 21 "begin" 	shift 10
 22 "end" 		reduce by 13 S1 -> 
 
33 3 "." 		reduce by 4 V1 -> "ident" ":" "type" 
 8 "ident" 		reduce by 4 V1 -> "ident" ":" "type" 
 11 ";" 	shift 41
 15 "if" 		reduce by 4 V1 -> "ident" ":" "type" 
 19 "while" 		reduce by 4 V1 -> "ident" ":" "type" 
 21 "begin" 		reduce by 4 V1 -> "ident" ":" "type" 
 
34 3 "." 		reduce by 10 S1 -> "if" C "then" S1 
 11 ";" 		reduce by 10 S1 -> "if" C "then" S1 
 18 "else" 	shift 42
 22 "end" 		reduce by 10 S1 -> "if" C "then" S1 
 
35 17 "then" 		reduce by 20 C -> E "relop" E 
 20 "do" 		reduce by 20 C -> E "relop" E 
 23 "+" 	shift 27
 
36 3 "." 		reduce by 14 E -> E "+" T 
 11 ";" 		reduce by 14 E -> E "+" T 
 17 "then" 		reduce by 14 E -> E "+" T 
 18 "else" 		reduce by 14 E -> E "+" T 
 20 "do" 		reduce by 14 E -> E "+" T 
 22 "end" 		reduce by 14 E -> E "+" T 
 23 "+" 		reduce by 14 E -> E "+" T 
 25 "*" 	shift 28
 28 ")" 		reduce by 14 E -> E "+" T 
 29 "relop" 		reduce by 14 E -> E "+" T 
 
37 3 "." 		reduce by 16 T -> T "*" F 
 11 ";" 		reduce by 16 T -> T "*" F 
 17 "then" 		reduce by 16 T -> T "*" F 
 18 "else" 		reduce by 16 T -> T "*" F 
 20 "do" 		reduce by 16 T -> T "*" F 
 22 "end" 		reduce by 16 T -> T "*" F 
 23 "+" 		reduce by 16 T -> T "*" F 
 25 "*" 		reduce by 16 T -> T "*" F 
 28 ")" 		reduce by 16 T -> T "*" F 
 29 "relop" 		reduce by 16 T -> T "*" F 
 
38 3 "." 		reduce by 18 F -> "(" E ")" 
 11 ";" 		reduce by 18 F -> "(" E ")" 
 17 "then" 		reduce by 18 F -> "(" E ")" 
 18 "else" 		reduce by 18 F -> "(" E ")" 
 20 "do" 		reduce by 18 F -> "(" E ")" 
 22 "end" 		reduce by 18 F -> "(" E ")" 
 23 "+" 		reduce by 18 F -> "(" E ")" 
 25 "*" 		reduce by 18 F -> "(" E ")" 
 28 ")" 		reduce by 18 F -> "(" E ")" 
 29 "relop" 		reduce by 18 F -> "(" E ")" 
 
39 3 "." 		reduce by 11 S1 -> "while" C "do" S1 
 11 ";" 		reduce by 11 S1 -> "while" C "do" S1 
 18 "else" 		reduce by 11 S1 -> "while" C "do" S1 
 22 "end" 		reduce by 11 S1 -> "while" C "do" S1 
 
40 22 "end" 		reduce by 7 S -> S1 ";" S 
 
41 7 V1 goto 43 8 "ident" 	shift 12
 
42 3 "." 		reduce by 13 S1 -> 
 5 S1 goto 44 8 "ident" 	shift 7
 11 ";" 		reduce by 13 S1 -> 
 15 "if" 	shift 8
 18 "else" 		reduce by 13 S1 -> 
 19 "while" 	shift 9
 21 "begin" 	shift 10
 22 "end" 		reduce by 13 S1 -> 
 
43 3 "." 		reduce by 5 V1 -> "ident" ":" "type" ";" V1 
 8 "ident" 		reduce by 5 V1 -> "ident" ":" "type" ";" V1 
 15 "if" 		reduce by 5 V1 -> "ident" ":" "type" ";" V1 
 19 "while" 		reduce by 5 V1 -> "ident" ":" "type" ";" V1 
 21 "begin" 		reduce by 5 V1 -> "ident" ":" "type" ";" V1 
 
44 3 "." 		reduce by 9 S1 -> "if" C "then" S1 "else" S1 
 11 ";" 		reduce by 9 S1 -> "if" C "then" S1 "else" S1 
 18 "else" 		reduce by 9 S1 -> "if" C "then" S1 "else" S1 
 22 "end" 		reduce by 9 S1 -> "if" C "then" S1 "else" S1