UnityScript.Parser.UnityScriptParser.class_declaration C# (CSharp) Method

class_declaration() public method

public class_declaration ( TypeDefinition parent ) : TypeMember
parent TypeDefinition
return TypeMember
        public TypeMember class_declaration(TypeDefinition parent)
        {
            TypeMember member = null;
            IToken token = null;
            IToken token2 = null;
            IToken token3 = null;
            try
            {
                TypeReference reference;
                ClassDefinition definition2;
                TypeReferenceCollection references;
                switch (this.LA(1))
                {
                    case 0x23:
                        token = this.LT(1);
                        this.match(0x23);
                        break;

                    case 8:
                        break;

                    default:
                        throw new NoViableAltException(this.LT(1), this.getFilename());
                }
                this.match(8);
                token2 = this.LT(1);
                this.match(0x3b);
                switch (this.LA(1))
                {
                    case 14:
                        this.match(14);
                        reference = this.type_reference();
                        break;

                    case 0x17:
                    case 0x3d:
                        break;

                    default:
                        throw new NoViableAltException(this.LT(1), this.getFilename());
                }
                if (base.inputState.guessing == 0)
                {
                    ClassDefinition definition;
                    ClassDefinition definition1 = definition = new ClassDefinition(ToLexicalInfo(token2));
                    definition.set_Name(token2.getText());
                    member = definition2 = definition;
                    references = definition2.get_BaseTypes();
                    if (reference != null)
                    {
                        references.Add(reference);
                    }
                    if (token != null)
                    {
                        definition2.set_Modifiers(definition2.get_Modifiers() | 0x400);
                    }
                    this.FlushAttributes(definition2);
                    parent.get_Members().Add(definition2);
                }
                switch (this.LA(1))
                {
                    case 0x17:
                        this.match(0x17);
                        this.type_reference_list(references);
                        break;

                    case 0x3d:
                        break;

                    default:
                        throw new NoViableAltException(this.LT(1), this.getFilename());
                }
                if (base.inputState.guessing == 0)
                {
                    foreach (TypeReference reference2 in references)
                    {
                        if (reference2 == reference)
                        {
                            BaseTypeAnnotations.AnnotateExtends(reference2);
                        }
                        else
                        {
                            BaseTypeAnnotations.AnnotateImplements(reference2);
                        }
                    }
                }
                this.match(0x3d);
                while (true)
                {
                    TypeMemberModifiers modifiers;
                    TypeMember member2;
                    if (!tokenSet_29_.member(this.LA(1)))
                    {
                        break;
                    }
                    if (base.inputState.guessing == 0)
                    {
                        modifiers = 0;
                    }
                    switch (this.LA(1))
                    {
                        case 0x63:
                            this.attributes();
                            break;

                        case 8:
                        case 13:
                        case 0x10:
                        case 0x13:
                        case 0x19:
                        case 0x1b:
                        case 0x1f:
                        case 0x20:
                        case 0x21:
                        case 0x22:
                        case 0x23:
                        case 0x24:
                        case 0x26:
                        case 0x2d:
                        case 0x2e:
                            break;

                        default:
                            throw new NoViableAltException(this.LT(1), this.getFilename());
                    }
                    if (tokenSet_30_.member(this.LA(1)) && tokenSet_31_.member(this.LA(2)))
                    {
                        modifiers = this.member_modifiers();
                    }
                    else if (!tokenSet_26_.member(this.LA(1)) || !tokenSet_32_.member(this.LA(2)))
                    {
                        throw new NoViableAltException(this.LT(1), this.getFilename());
                    }
                    int num = this.LA(1);
                    switch (num)
                    {
                        case 0x13:
                            member2 = this.function_member(definition2);
                            break;

                        case 0x2d:
                            member2 = this.field_member(definition2);
                            break;

                        case 13:
                            member2 = this.enum_declaration(definition2);
                            break;

                        case 8:
                        case 0x23:
                            member2 = this.class_declaration(definition2);
                            break;

                        default:
                            if (num != 0x19)
                            {
                                throw new NoViableAltException(this.LT(1), this.getFilename());
                            }
                            member2 = this.interface_declaration(definition2);
                            break;
                    }
                    if ((base.inputState.guessing == 0) && (member2 != null))
                    {
                        member2.set_Modifiers(member2.get_Modifiers() | modifiers);
                    }
                }
                token3 = this.LT(1);
                this.match(0x3e);
                if (base.inputState.guessing == 0)
                {
                    SetEndSourceLocation(definition2, token3);
                }
                while ((this.LA(1) == 0x4d) && tokenSet_33_.member(this.LA(2)))
                {
                    this.match(0x4d);
                }
                return member;
            }
            catch (RecognitionException exception)
            {
                if (base.inputState.guessing != 0)
                {
                    throw;
                }
                this.reportError(exception);
                this.recover(exception, tokenSet_33_);
                return member;
            }
            return member;
        }
UnityScriptParser