LR(1) derivation example
Grammar
S -> V = E
S -> E
E -> V
V -> x
V -> * E
Input
* x = x
STEP 1
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} |
Input : * x = x <eof>
Action : shift
STEP 2
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | * |
Input : x = x <eof>
Action : goto
STEP 3
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | * | E -> . V {<eof>, =}
V -> . * E {<eof>, =}
V -> . x {<eof>, =}
V -> * . E {<eof>, =} |
Input : x = x <eof>
Action : shift
STEP 4
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | * | E -> . V {<eof>, =}
V -> . * E {<eof>, =}
V -> . x {<eof>, =}
V -> * . E {<eof>, =} | x |
Input : = x <eof>
Action : goto
STEP 5
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | * | E -> . V {<eof>, =}
V -> . * E {<eof>, =}
V -> . x {<eof>, =}
V -> * . E {<eof>, =} | x | |
Input : = x <eof>
Action : reduce V -> x . {<eof>, =}
STEP 6
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | * | E -> . V {<eof>, =}
V -> . * E {<eof>, =}
V -> . x {<eof>, =}
V -> * . E {<eof>, =} | V
└── x |
Input : = x <eof>
Action : goto
STEP 7
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | * | E -> . V {<eof>, =}
V -> . * E {<eof>, =}
V -> . x {<eof>, =}
V -> * . E {<eof>, =} | V
└── x | |
Input : = x <eof>
Action : reduce E -> V . {<eof>, =}
STEP 8
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | * | E -> . V {<eof>, =}
V -> . * E {<eof>, =}
V -> . x {<eof>, =}
V -> * . E {<eof>, =} | E
└── V
└── x |
Input : = x <eof>
Action : goto
STEP 9
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | * | E -> . V {<eof>, =}
V -> . * E {<eof>, =}
V -> . x {<eof>, =}
V -> * . E {<eof>, =} | E
└── V
└── x | |
Input : = x <eof>
Action : reduce V -> * E . {<eof>, =}
STEP 10
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | V
├── *
└── E
└── V
└── x |
Input : = x <eof>
Action : goto
STEP 11
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | V
├── *
└── E
└── V
└── x | E -> V . {<eof>}
S -> V . = E {<eof>} |
Input : = x <eof>
Action : shift
STEP 12
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | V
├── *
└── E
└── V
└── x | E -> V . {<eof>}
S -> V . = E {<eof>} | = |
Input : x <eof>
Action : goto
STEP 13
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | V
├── *
└── E
└── V
└── x | E -> V . {<eof>}
S -> V . = E {<eof>} | = | E -> . V {<eof>}
S -> V = . E {<eof>}
V -> . * E {<eof>}
V -> . x {<eof>} |
Input : x <eof>
Action : shift
STEP 14
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | V
├── *
└── E
└── V
└── x | E -> V . {<eof>}
S -> V . = E {<eof>} | = | E -> . V {<eof>}
S -> V = . E {<eof>}
V -> . * E {<eof>}
V -> . x {<eof>} | x |
Input : <eof>
Action : goto
STEP 15
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | V
├── *
└── E
└── V
└── x | E -> V . {<eof>}
S -> V . = E {<eof>} | = | E -> . V {<eof>}
S -> V = . E {<eof>}
V -> . * E {<eof>}
V -> . x {<eof>} | x | |
Input : <eof>
Action : reduce V -> x . {<eof>}
STEP 16
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | V
├── *
└── E
└── V
└── x | E -> V . {<eof>}
S -> V . = E {<eof>} | = | E -> . V {<eof>}
S -> V = . E {<eof>}
V -> . * E {<eof>}
V -> . x {<eof>} | V
└── x |
Input : <eof>
Action : goto
STEP 17
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | V
├── *
└── E
└── V
└── x | E -> V . {<eof>}
S -> V . = E {<eof>} | = | E -> . V {<eof>}
S -> V = . E {<eof>}
V -> . * E {<eof>}
V -> . x {<eof>} | V
└── x | |
Input : <eof>
Action : reduce E -> V . {<eof>}
STEP 18
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | V
├── *
└── E
└── V
└── x | E -> V . {<eof>}
S -> V . = E {<eof>} | = | E -> . V {<eof>}
S -> V = . E {<eof>}
V -> . * E {<eof>}
V -> . x {<eof>} | E
└── V
└── x |
Input : <eof>
Action : goto
STEP 19
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | V
├── *
└── E
└── V
└── x | E -> V . {<eof>}
S -> V . = E {<eof>} | = | E -> . V {<eof>}
S -> V = . E {<eof>}
V -> . * E {<eof>}
V -> . x {<eof>} | E
└── V
└── x | |
Input : <eof>
Action : reduce S -> V = E . {<eof>}
STEP 20
Stack :
E -> . V {<eof>}
S -> . E {<eof>}
S -> . V = E {<eof>}
V -> . * E {<eof>, =}
V -> . x {<eof>, =} | 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.