protected int GetSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(ATNConfigSet configs,
ParserRuleContext outerContext)
{
Pair<ATNConfigSet, ATNConfigSet> sets =
SplitAccordingToSemanticValidity(configs, outerContext);
ATNConfigSet semValidConfigs = sets.a;
ATNConfigSet semInvalidConfigs = sets.b;
int alt = getAltThatFinishedDecisionEntryRule(semValidConfigs);
if (alt != ATN.INVALID_ALT_NUMBER)
{ // semantically/syntactically viable path exists
return alt;
}
// Is there a syntactically valid path with a failed pred?
if (semInvalidConfigs.Count > 0)
{
alt = getAltThatFinishedDecisionEntryRule(semInvalidConfigs);
if (alt != ATN.INVALID_ALT_NUMBER)
{ // syntactically viable path exists
return alt;
}
}
return ATN.INVALID_ALT_NUMBER;
}