title: Explanation about viable prefix
body: <p>In Ullman's book of compilers, in shift reduce parsing, following definition of viable prefix is given :  </p>
  
  <p>"The set of prefixes of right sentential forms that can appear on the stack of a shift-reduce parser are called viable prefixes. An equivalent definition of a viable prefix is that it is a prefix of right sentential form that does not continue past the right end of the rightmost handle of that sentential form. By this definition, it is always possible to add terminal symbols to the end of a viable prefix to obtain a right sentential form. Therefore, there is apparently no error as long as the portion of the input seen to a given point can be reduced to a viable prefix."  </p>
  
  <p>I can't understand this definition. Could someone explain the meaning of viable prefix with an example ?<br>
  In particular, please explain the meaning of<br>
  "An equivalent definition of a viable prefix is that it is a prefix of right sentential form that does not continue past the right end of the rightmost handle of that sentential form"</p>