private Grammar ERI() { if (eof) { return(null); } SkipNewLine(); Grammar grammar; switch (lookAhead) { case Sym.PERIOD: grammar = new CONCATENATION(); match(Sym.PERIOD); grammar.addFirst(ERI()); grammar.addSecond(ERI()); break; case Sym.OR: grammar = new OR(); match(Sym.OR); grammar.addFirst(ERI()); grammar.addSecond(ERI()); break; case Sym.QUESTION_MARK: grammar = new QUESTION(); match(Sym.QUESTION_MARK); grammar.addFirst(ERI()); break; case Sym.TIMES: grammar = new Times(); match(Sym.TIMES); grammar.addFirst(ERI()); break; case Sym.PLUS: grammar = new Plus(); match(Sym.PLUS); grammar.addFirst(ERI()); break; case Sym.OPEN_CB: grammar = LEAF(); break; case Sym.STRING: grammar = LEAF(); break; default: grammar = null; ERROR(); Sync(); break; } return(grammar); }