public virtual int GetUniquelyPredictedAlt()
{
if ( _cachedUniquelyPredicatedAlt.HasValue )
{
return _cachedUniquelyPredicatedAlt.Value;
}
int alt = NFA.INVALID_ALT_NUMBER;
int numConfigs = _nfaConfigurations.Count;
for ( int i = 0; i < numConfigs; i++ )
{
NFAConfiguration configuration = _nfaConfigurations[i];
// ignore anything we resolved; predicates will still result
// in transitions out of this state, so must count those
// configurations; i.e., don't ignore resolveWithPredicate configs
if ( configuration.Resolved )
{
continue;
}
if ( alt == NFA.INVALID_ALT_NUMBER )
{
alt = configuration.Alt; // found first nonresolved alt
}
else if ( configuration.Alt != alt )
{
return NFA.INVALID_ALT_NUMBER;
}
}
this._cachedUniquelyPredicatedAlt = alt;
return alt;
}