LR(1) derivation example

Grammar

S -> V = E
S -> E
E -> V
V -> x
V -> * E

Input

* x = x

STEP 1

Stack  :

Input  : * x = x <eof>

Action : shift

STEP 2

Stack  :
*

Input  : x = x <eof>

Action : goto

STEP 3

Stack  :
*

Input  : x = x <eof>

Action : shift

STEP 4

Stack  :
*
x

Input  : = x <eof>

Action : goto

STEP 5

Stack  :
*
x

Input  : = x <eof>

Action : reduce V -> x . {<eof>, =}

STEP 6

Stack  :
*
V
└── x

Input  : = x <eof>

Action : goto

STEP 7

Stack  :
*
V
└── x

Input  : = x <eof>

Action : reduce E -> V . {<eof>, =}

STEP 8

Stack  :
*
E
└── V
    └── x

Input  : = x <eof>

Action : goto

STEP 9

Stack  :
*
E
└── V
    └── x

Input  : = x <eof>

Action : reduce V -> * E . {<eof>, =}

STEP 10

Stack  :
V
├── *
└── E
    └── V
        └── x

Input  : = x <eof>

Action : goto

STEP 11

Stack  :
V
├── *
└── E
    └── V
        └── x

Input  : = x <eof>

Action : shift

STEP 12

Stack  :
V
├── *
└── E
    └── V
        └── x
=

Input  : x <eof>

Action : goto

STEP 13

Stack  :
V
├── *
└── E
    └── V
        └── x
=

Input  : x <eof>

Action : shift

STEP 14

Stack  :
V
├── *
└── E
    └── V
        └── x
=
x

Input  : <eof>

Action : goto

STEP 15

Stack  :
V
├── *
└── E
    └── V
        └── x
=
x

Input  : <eof>

Action : reduce V -> x . {<eof>}

STEP 16

Stack  :
V
├── *
└── E
    └── V
        └── x
=
V
└── x

Input  : <eof>

Action : goto

STEP 17

Stack  :
V
├── *
└── E
    └── V
        └── x
=
V
└── x

Input  : <eof>

Action : reduce E -> V . {<eof>}

STEP 18

Stack  :
V
├── *
└── E
    └── V
        └── x
=
E
└── V
    └── x

Input  : <eof>

Action : goto

STEP 19

Stack  :
V
├── *
└── E
    └── V
        └── x
=
E
└── V
    └── x

Input  : <eof>

Action : reduce S -> V = E . {<eof>}

STEP 20

Stack  :
S
├── V
│   ├── *
│   └── E
│       └── V
│           └── x
├── =
└── E
    └── V
        └── x

Input  : <eof>

Action : accept

S
├── V
│   ├── *
│   └── E
│       └── V
│           └── x
├── =
└── E
    └── V
        └── x

First, Follow, Nullable sets

first    (E) = {*, x}
follow   (E) = {=}
nullable (E) = false

first    (S) = {*, x}
follow   (S) = {}
nullable (S) = false

first    (V) = {*, x}
follow   (V) = {=}
nullable (V) = false

first    (*) = {*}
follow   (*) = {*, x}
nullable (*) = false

first    (=) = {=}
follow   (=) = {*, x}
nullable (=) = false

first    (x) = {x}
follow   (x) = {=}
nullable (x) = false

Automaton


The example on this page is auto-generated with dOvs teaching LR parser generator tool. The tool and the webpage is maintained by Aslan Askarov.