public override Choice GetLL1EBNFBlock(GrammarAST ebnfRoot, IList<CodeBlockForAlt> alts) { int ebnf = 0; if (ebnfRoot != null) ebnf = ebnfRoot.Type; Choice c = null; switch (ebnf) { case ANTLRParser.OPTIONAL: if (alts.Count == 1) c = new LL1OptionalBlockSingleAlt(this, ebnfRoot, alts); else c = new LL1OptionalBlock(this, ebnfRoot, alts); break; case ANTLRParser.CLOSURE: if (alts.Count == 1) c = new LL1StarBlockSingleAlt(this, ebnfRoot, alts); else c = GetComplexEBNFBlock(ebnfRoot, alts); break; case ANTLRParser.POSITIVE_CLOSURE: if (alts.Count == 1) c = new LL1PlusBlockSingleAlt(this, ebnfRoot, alts); else c = GetComplexEBNFBlock(ebnfRoot, alts); break; } return c; }