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

method() protected method

protected method ( TypeMemberCollection container ) : void
container TypeMemberCollection
return void
        protected void method(
		TypeMemberCollection container
	)
        {
            IToken  t = null;
            IToken  spliceBegin = null;
            IToken  c = null;
            IToken  d = null;

                Method m = null;
                TypeReference rt = null;
                TypeReference it = null;
                ExplicitMemberInfo emi = null;
                ParameterDeclarationCollection parameters = null;
                GenericParameterDeclarationCollection genericParameters = null;
                Block body = null;
                StatementCollection statements = null;
                Expression nameSplice = null;
                TypeMember typeMember = null;
                IToken id = null;

            try {      // for error handling
            t = LT(1);
            match(DEF);
            {
                switch ( LA(1) )
                {
                case EVENT:
                case GET:
                case INTERNAL:
                case PUBLIC:
                case PROTECTED:
                case REF:
                case SET:
                case YIELD:
                case ID:
                case SPLICE_BEGIN:
                {
                    {
                        {
                            {
                                if ((LA(1)==ID) && (LA(2)==DOT))
                                {
                                    emi=explicit_member_info();
                                }
                                else if ((tokenSet_33_.member(LA(1))) && (tokenSet_34_.member(LA(2)))) {
                                }
                                else
                                {
                                    throw new NoViableAltException(LT(1), getFilename());
                                }

                            }
                            {
                                switch ( LA(1) )
                                {
                                case EVENT:
                                case GET:
                                case INTERNAL:
                                case PUBLIC:
                                case PROTECTED:
                                case REF:
                                case SET:
                                case YIELD:
                                case ID:
                                {
                                    id=member();
                                    break;
                                }
                                case SPLICE_BEGIN:
                                {
                                    spliceBegin = LT(1);
                                    match(SPLICE_BEGIN);
                                    nameSplice=atom();
                                    break;
                                }
                                default:
                                {
                                    throw new NoViableAltException(LT(1), getFilename());
                                }
                                 }
                            }
                        }
                        if (0==inputState.guessing)
                        {

                                            IToken token = id ?? spliceBegin;
                                            if (emi != null) {
                                                m = new Method(emi.LexicalInfo);
                                            } else {
                                                m = new Method(ToLexicalInfo(token));
                                            }
                                            m.Name = token.getText();
                                            m.ExplicitInfo  = emi;

                                            if (nameSplice != null) {
                                                typeMember = new SpliceTypeMember(m, nameSplice);
                                            } else {
                                                typeMember = m;
                                            }

                        }
                    }
                    break;
                }
                case CONSTRUCTOR:
                {
                    c = LT(1);
                    match(CONSTRUCTOR);
                    if (0==inputState.guessing)
                    {
                        typeMember = m = new Constructor(ToLexicalInfo(c));
                    }
                    break;
                }
                case DESTRUCTOR:
                {
                    d = LT(1);
                    match(DESTRUCTOR);
                    if (0==inputState.guessing)
                    {
                        typeMember = m = new Destructor(ToLexicalInfo(d));
                    }
                    break;
                }
                default:
                {
                    throw new NoViableAltException(LT(1), getFilename());
                }
                 }
            }
            if (0==inputState.guessing)
            {

                        m.Modifiers = _modifiers;
                        AddAttributes(m.Attributes);
                        parameters = m.Parameters;
                        genericParameters = m.GenericParameters;
                        body = m.Body;
                        statements = body.Statements;

            }
            {
                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:
                {
                    break;
                }
                default:
                {
                    throw new NoViableAltException(LT(1), getFilename());
                }
                 }
            }
            match(LPAREN);
            parameter_declaration_list(parameters);
            match(RPAREN);
            attributes();
            if (0==inputState.guessing)
            {
                AddAttributes(m.ReturnTypeAttributes);
            }
            {
                switch ( LA(1) )
                {
                case AS:
                {
                    match(AS);
                    rt=type_reference();
                    if (0==inputState.guessing)
                    {
                        m.ReturnType = rt;
                    }
                    break;
                }
                case COLON:
                {
                    break;
                }
                default:
                {
                    throw new NoViableAltException(LT(1), getFilename());
                }
                 }
            }
            begin_block_with_doc(m, body);
            block(statements);
            end(body);
            if (0==inputState.guessing)
            {

                        container.Add(typeMember);
                        m.EndSourceLocation = body.EndSourceLocation;

            }
            }
            catch (RecognitionException ex)
            {
            if (0 == inputState.guessing)
            {
                reportError(ex, "method");
                recover(ex,tokenSet_22_);
            }
            else
            {
                throw ex;
            }
            }
        }
BooParserBase