/// <summary> /// Find error recovery state. /// </summary> /// <returns>result.</returns> private bool FindErrorRecoveryState() { while (true) // pop states until one found that accepts error token { if (FsaState.ParserTable != null && FsaState.ParserTable.ContainsKey(errorToken) && FsaState.ParserTable[errorToken] > 0) // shift { return(true); } StateStack.Pop(); ValueStack.Pop(); LocationStack.Pop(); if (StateStack.IsEmpty()) { return(false); } else { FsaState = StateStack.TopElement(); } } }