Class Choice

  • Direct Known Subclasses:
    AltBlock, LL1Choice, LL1Loop, Loop

    public abstract class Choice
    extends RuleElement
    The class hierarchy underneath SrcOp is pretty deep but makes sense that, for example LL1StarBlock is a kind of LL1Loop which is a kind of Choice. The problem is it's impossible to figure out how to construct one of these deeply nested objects because of the long super constructor call chain. Instead, I decided to in-line all of this and then look for opportunities to re-factor code into functions. It makes sense to use a class hierarchy to share data fields, but I don't think it makes sense to factor code using super constructors because it has too much work to do.