Grammar:
 r -> <4> l;
 l -> <2> MUL r
    | <3> ID;
 s -> <0> l EQUALS r
    | <1> r;
Ss' -> <5> s;

First sets:
FIRST(r) = {ID, MUL}
FIRST(l) = {ID, MUL}
FIRST(s) = {ID, MUL}
FIRST(s') = {ID, MUL}

Follow sets:
FOLLOW(r) = {EOF, EQUALS}
FOLLOW(l) = {EOF, EQUALS}
FOLLOW(s) = {EOF}
FOLLOW(s') = {EOF}

Automation:
Non-terminal count: 3
Terminal count: 4
State count: 10 (0 - 9)

Action table:
STATE | EQUALS |    MUL |     ID |    EOF
   0  | ------ |     s4 |     s1 | ------
   1  |     r3 | ------ | ------ |     r3
   2  | ------ | ------ | ------ |     r1
   3  |     s6 | ------ | ------ |     r4
   4  | ------ |     s4 |     s1 | ------
   5  | ------ | ------ | ------ | accept
   6  | ------ |     s4 |     s1 | ------
   7  |     r2 | ------ | ------ |     r2
   8  |     r4 | ------ | ------ |     r4
   9  | ------ | ------ | ------ |     r0


Goto table:
STATE |     r |     s |     l
   0  |     2 |     5 |     3
   1  | ----- | ----- | -----
   2  | ----- | ----- | -----
   3  | ----- | ----- | -----
   4  |     7 | ----- |     8
   5  | ----- | ----- | -----
   6  |     9 | ----- |     8
   7  | ----- | ----- | -----
   8  | ----- | ----- | -----
   9  | ----- | ----- | -----


State 0:
    s' -> * s

State 1:
    l -> ID *

State 2:
    s -> r *

State 3:
    s -> l * EQUALS r
    r -> l *

State 4:
    l -> MUL * r

State 5:
    s' -> s *

State 6:
    s -> l EQUALS * r

State 7:
    l -> MUL r *

State 8:
    r -> l *

State 9:
    s -> l EQUALS r *
