Implementing Shift Reduce Technique

Estudies4you

Implementing Shift Reduce Technique

In this regard, the following two important questions must be answered
 How to detect the handle? (Without using right most derivation as shown in the above examples)
 What production is to be used when more than one production with same right side?
The operator precedence and LR parsers answer these questions in their own way
Implementing shift reduce technique can be easily done by using a data structure stack
Initially,  the parser starts with an empty stack with $ placed at its bottom and input to parsed w,  ended with $,  means that the initial configuration of the parser is,

Stack $

Input w$

Example 1:
Consider the Grammar
E → E + T
E → T
T → T * F
T → F
F → id
Input string: id1 * id2
The parsing table for the input string is:
Stack
Input
Action
$
id1*id2$
shift
$id2
*id2$
reduce by F→id
$F
*id2$
reduce by T→F
$T
*id2$
shift
$T*
id2$
shift
$T*id2
$
reduce by F→id
$T*F
$
reduce by T→T*F
$T
$
reduce by E→T
$E
$
Accept

Example 2:
Consider the grammar
E → E + E
E → E * E
E → (E)
E → id

Input String: id1 * id2 * id3
The parsing table for the input string is:
Stack
Input
Action
$
id1 * id2 * id3 $
shift
id1
 + id2 * id3 $
reduce by E→id
$ E
 + id2 * id3 $
shift
$ E +
 id2 * id3 $
shift
$E + id2
id3 $
reduce by E→id
$ E + E
id3 $
shift
$ E + E *
 id3 $
shift
$E+E*id3
$
reduce by E→id
$ E + E*E
$
reduce by E→E * E
$ E + E
$
reduce by E→E + E
$ E
$
Accept


Advantages of Stack

  • The handle is always found on the top of the stack only
  • There is no need to go inside the stack to find a handle
  • Stack makes the implementation of handle pruning easy
Home

To Top