示例#1
0
        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);
        }