Пример #1
0
        private void CHAR_LIST(GrammarSet conj)
        {
            if (eof)
            {
                return;
            }
            SkipNewLine();
            //Console.WriteLine("CHAR_LIST");
            switch (lookAhead)
            {
            case Sym.COMA:
                match(Sym.COMA); CHAR(conj); CHAR_LIST(conj);
                break;

            case Sym.SEMI_COLON:
                //Do nothing EPSILON CASE
                break;

            default:
                conj.ConjInError = true;
                ERROR();
                Sync();
                break;
            }
        }
Пример #2
0
        private void CONJ()
        {
            if (eof)
            {
                return;
            }
            SkipNewLine();
            //Console.WriteLine("CONJ");
            switch (lookAhead)
            {
            case Sym.CONJ:
                GrammarSet conj = new GrammarSet();
                sTable.addSet(conj);
                match(Sym.CONJ); match(Sym.COLON); Token id = match(Sym.ID);
                if (id != null)
                {
                    conj.ConjName = id.lexeme;
                }
                else
                {
                    conj.ConjInError = true;
                }
                match(Sym.ARROW); CHAR(conj); CONJ_BODY(conj); match(Sym.SEMI_COLON);
                conj.createCharacters();
                break;

            default:
                ERROR();
                Sync();
                break;
            }
        }
Пример #3
0
        private void CONJ_BODY(GrammarSet conj)
        {
            if (eof)
            {
                return;
            }
            SkipNewLine();
            switch (lookAhead)
            {
            case Sym.TILDE:
                conj.SimpleSet = true;
                match(Sym.TILDE); CHAR(conj);
                break;

            case Sym.COMA:
            case Sym.SEMI_COLON:
                CHAR_LIST(conj);
                break;

            default:
                conj.ConjInError = true;
                ERROR();
                Sync();
                break;
            }
        }
Пример #4
0
        private void CHAR(GrammarSet conj)
        {
            if (eof)
            {
                return;
            }
            SkipNewLine();
            switch (lookAhead)
            {
            case Sym.TILDE:
                conj.addChar(token);
                match(Sym.TILDE);
                break;

            case Sym.SEMI_COLON:
                conj.addChar(token);
                match(Sym.SEMI_COLON);
                break;

            case Sym.CHARACTER:
                conj.addChar(token);
                match(Sym.CHARACTER);
                break;

            case Sym.SPECIAL_CARACTER:
                conj.addChar(token);
                match(Sym.SPECIAL_CARACTER);
                break;

            case Sym.COMA:
                conj.addChar(token);
                match(Sym.COMA);
                break;

            case Sym.DIGIT:
                conj.addChar(token);
                match(Sym.DIGIT);
                break;

            default:
                conj.ConjInError = true;
                ERROR();
                Sync();
                break;
            }
        }
Пример #5
0
 public void addSet(GrammarSet newSet)
 {
     //TOOD validate name of set;
     SetsList.Add(newSet);
 }