Boo.Lang.Parser.BooParserBase.class_definition C# (CSharp) Method

class_definition() protected method

protected class_definition ( TypeMemberCollection container ) : void
container TypeMemberCollection
return void
        protected void class_definition(
		TypeMemberCollection container
	)
        {
            IToken  id = null;
            IToken  begin = null;

                TypeDefinition td = null;
                TypeReferenceCollection baseTypes = null;
                TypeMemberCollection members = null;
                GenericParameterDeclarationCollection genericParameters = null;
                Expression nameSplice = null;

            try {      // for error handling
            {
                switch ( LA(1) )
                {
                case CLASS:
                {
                    match(CLASS);
                    if (0==inputState.guessing)
                    {
                        td = new ClassDefinition();
                    }
                    break;
                }
                case STRUCT:
                {
                    match(STRUCT);
                    if (0==inputState.guessing)
                    {
                        td = new StructDefinition();
                    }
                    break;
                }
                default:
                {
                    throw new NoViableAltException(LT(1), getFilename());
                }
                 }
            }
            {
                switch ( LA(1) )
                {
                case ID:
                {
                    id = LT(1);
                    match(ID);
                    break;
                }
                case SPLICE_BEGIN:
                {
                    begin = LT(1);
                    match(SPLICE_BEGIN);
                    nameSplice=atom();
                    break;
                }
                default:
                {
                    throw new NoViableAltException(LT(1), getFilename());
                }
                 }
            }
            if (0==inputState.guessing)
            {

                        IToken token = id ?? begin;
                        td.LexicalInfo = ToLexicalInfo(token);
                        td.Name = token.getText();
                        td.Modifiers = _modifiers;
                        AddAttributes(td.Attributes);
                        baseTypes = td.BaseTypes;
                        members = td.Members;
                        genericParameters = td.GenericParameters;

                        if (id != null) {
                            container.Add(td);
                        } else {
                            container.Add(new SpliceTypeMember(td, nameSplice));
                        }

            }
            {
                switch ( LA(1) )
                {
                case LBRACK:
                {
                    match(LBRACK);
                    {
                        switch ( LA(1) )
                        {
                        case OF:
                        {
                            match(OF);
                            break;
                        }
                        case ID:
                        {
                            break;
                        }
                        default:
                        {
                            throw new NoViableAltException(LT(1), getFilename());
                        }
                         }
                    }
                    generic_parameter_declaration_list(genericParameters);
                    match(RBRACK);
                    break;
                }
                case LPAREN:
                case COLON:
                {
                    break;
                }
                default:
                {
                    throw new NoViableAltException(LT(1), getFilename());
                }
                 }
            }
            {
                switch ( LA(1) )
                {
                case LPAREN:
                {
                    base_types(baseTypes);
                    break;
                }
                case COLON:
                {
                    break;
                }
                default:
                {
                    throw new NoViableAltException(LT(1), getFilename());
                }
                 }
            }
            begin_with_doc(td);
            {
                switch ( LA(1) )
                {
                case PASS:
                {
                    {
                        match(PASS);
                        eos();
                    }
                    break;
                }
                case EOL:
                case ABSTRACT:
                case CALLABLE:
                case CLASS:
                case DEF:
                case ENUM:
                case EVENT:
                case FINAL:
                case INTERFACE:
                case INTERNAL:
                case NEW:
                case OVERRIDE:
                case PARTIAL:
                case PUBLIC:
                case PROTECTED:
                case PRIVATE:
                case SELF:
                case STATIC:
                case STRUCT:
                case THEN:
                case TRANSIENT:
                case VIRTUAL:
                case EOS:
                case ID:
                case LBRACK:
                case SPLICE_BEGIN:
                {
                    {
                        {
                            switch ( LA(1) )
                            {
                            case EOL:
                            case EOS:
                            {
                                eos();
                                break;
                            }
                            case ABSTRACT:
                            case CALLABLE:
                            case CLASS:
                            case DEF:
                            case ENUM:
                            case EVENT:
                            case FINAL:
                            case INTERFACE:
                            case INTERNAL:
                            case NEW:
                            case OVERRIDE:
                            case PARTIAL:
                            case PUBLIC:
                            case PROTECTED:
                            case PRIVATE:
                            case SELF:
                            case STATIC:
                            case STRUCT:
                            case THEN:
                            case TRANSIENT:
                            case VIRTUAL:
                            case ID:
                            case LBRACK:
                            case SPLICE_BEGIN:
                            {
                                break;
                            }
                            default:
                            {
                                throw new NoViableAltException(LT(1), getFilename());
                            }
                             }
                        }
                        { // ( ... )+
                            int _cnt76=0;
                            for (;;)
                            {
                                bool synPredMatched75 = false;
                                if (((LA(1)==SPLICE_BEGIN) && (tokenSet_34_.member(LA(2)))))
                                {
                                    int _m75 = mark();
                                    synPredMatched75 = true;
                                    inputState.guessing++;
                                    try {
                                        {
                                            splice_expression();
                                            eos();
                                        }
                                    }
                                    catch (RecognitionException)
                                    {
                                        synPredMatched75 = false;
                                    }
                                    rewind(_m75);
                                    inputState.guessing--;
                                }
                                if ( synPredMatched75 )
                                {
                                    splice_type_definition_body(members);
                                }
                                else if ((tokenSet_35_.member(LA(1))) && (tokenSet_36_.member(LA(2)))) {
                                    type_definition_member(members);
                                }
                                else
                                {
                                    if (_cnt76 >= 1) { goto _loop76_breakloop; } else { throw new NoViableAltException(LT(1), getFilename());; }
                                }

                                _cnt76++;
                            }
            _loop76_breakloop:							;
                        }    // ( ... )+
                    }
                    break;
                }
                default:
                {
                    throw new NoViableAltException(LT(1), getFilename());
                }
                 }
            }
            end(td);
            }
            catch (RecognitionException ex)
            {
            if (0 == inputState.guessing)
            {
                reportError(ex, "class_definition");
                recover(ex,tokenSet_22_);
            }
            else
            {
                throw ex;
            }
            }
        }
BooParserBase