findRecoveryStateIndex method

int findRecoveryStateIndex(
  1. int start_index
)

Implementation

int findRecoveryStateIndex(int start_index) {
  int i;
  for (i = start_index; i >= 0; i--) {
    //
    // If the ERROR_SYMBOL is an Action Adjunct in state stateStack[i]
    // then chose i as the index of the state to recover on.
    //
    if (recoverableState(stateStack[i])) break;
  }

  if (i >= 0) // if a recoverable state, remove null reductions, if any.
  {
    int k;
    for (k = i - 1; k >= 0; k--) {
      if (locationStack[k] != locationStack[i]) break;
    }
    i = k + 1;
  }

  return i;
}