public override RuleFunction Rule(Rule r)
{
if (r is LeftRecursiveRule)
{
return new LeftRecursiveRuleFunction(this, (LeftRecursiveRule)r);
}
else if (r.name.Contains(ATNSimulator.RuleLfVariantMarker))
{
return new LeftFactoredRuleFunction(this, r);
}
else if (r.name.Contains(ATNSimulator.RuleNolfVariantMarker))
{
return new LeftUnfactoredRuleFunction(this, r);
}
else
{
RuleFunction rf = new RuleFunction(this, r);
return rf;
}
}