public Rule(Grammar g, string name, RuleAST ast, int numberOfAlts)
{
this.g = g;
this.name = name;
this.ast = ast;
this.numberOfAlts = numberOfAlts;
alt = new Alternative[numberOfAlts + 1]; // 1..n
for (int i = 1; i <= numberOfAlts; i++)
alt[i] = new Alternative(this, i);
}