protected internal virtual ATNState StateFactory(StateType type, int ruleIndex)
{
ATNState s;
switch (type)
{
case StateType.InvalidType:
{
return null;
}
case StateType.Basic:
{
s = new BasicState();
break;
}
case StateType.RuleStart:
{
s = new RuleStartState();
break;
}
case StateType.BlockStart:
{
s = new BasicBlockStartState();
break;
}
case StateType.PlusBlockStart:
{
s = new PlusBlockStartState();
break;
}
case StateType.StarBlockStart:
{
s = new StarBlockStartState();
break;
}
case StateType.TokenStart:
{
s = new TokensStartState();
break;
}
case StateType.RuleStop:
{
s = new RuleStopState();
break;
}
case StateType.BlockEnd:
{
s = new BlockEndState();
break;
}
case StateType.StarLoopBack:
{
s = new StarLoopbackState();
break;
}
case StateType.StarLoopEntry:
{
s = new StarLoopEntryState();
break;
}
case StateType.PlusLoopBack:
{
s = new PlusLoopbackState();
break;
}
case StateType.LoopEnd:
{
s = new LoopEndState();
break;
}
default:
{
string message = string.Format(CultureInfo.CurrentCulture, "The specified state type {0} is not valid.", type);
throw new ArgumentException(message);
}
}
s.ruleIndex = ruleIndex;
return s;
}