Пример #1
0
        public override object VisitClassDeclaration(ClassDeclarationContext context)
        {
            if (_ignoreOfPragma)
            {
                return(null);
            }

            var namespaceBaseClass = _currentClass;

            _currentClass = Get <Class>(context.type());

            var isStructReal = context.classOrStruct().GetText() == "struct";

            _currentClass.SourceFile    = _currentFile;
            _currentClass.SourceLine    = context.Start.Line;
            _currentClass.IsImplemented = true;
            _currentClass.IsTemplate    = context.FoundChild <TemplateDefineContext>();
            _currentClass.IsFinal       = context.FoundChild <IsFinalContext>();
            _currentClass.UMeta         = _currentUMeta ?? _currentClass.UMeta;
            _currentClass.Description   = _currentComment;

            switch (_currentClass.Name.First())
            {
            case 'U':
                _currentClass.IsStructure = false;
                break;

            case 'F':
                _currentClass.IsStructure = true;
                break;

            default:
                _currentClass.IsStructure = isStructReal;
                break;
            }

            _accessModifier = isStructReal
                ? AccessModifier.Public
                : AccessModifier.Private;

            _ignoreOfAccessModifier = _accessModifier == AccessModifier.Private;

            var parentClassName = context.Child <ClassParentListContext>()?.type();

            if (parentClassName != null)
            {
                _currentClass.BaseClass = Get <Class>(parentClassName);
            }

            _currentUMeta   = null;
            _currentComment = "";

            VisitClassBody(context.Child <ClassBodyContext>());

            _currentClass.NamespaceBaseType = namespaceBaseClass;
            _currentClass = namespaceBaseClass;

            return(null);
        }
        protected virtual bool VisitClassDeclaration(ClassDeclarationContext ctx)
        {
            var className = ctx.children[1];

            if (className.GetText() == "PaintCodeColor")
            {
                var styleKitPaintCodeColorClassVisitor = new StyleKitPaintCodeColorClassVisitor(this);
                styleKitPaintCodeColorClassVisitor.Visit(ctx);
                return(false);
            }

            return(true);
        }
        protected override bool VisitClassDeclaration(ClassDeclarationContext ctx)
        {
            var className = ctx.children[1];

            if (className.GetText() == "PaintCodeColor")
            {
                var extendsToken = (TerminalNodeImpl)ctx.children[2];
                var colorClass   = (TypeTypeContext)ctx.children[3];
                _rewriter.Delete(extendsToken.Symbol);
                _rewriter.Delete(colorClass.Start);
            }

            return(true);
        }
Пример #4
0
        /// <summary>
        /// Fill Class from ClassDeclarationContext
        /// </summary>
        /// <param name="inClass"></param>
        /// <param name="inClassContext"></param>
        internal static void FillClassContext(ClassContainer inClass, ClassDeclarationContext inClassContext)
        {
            if (inClassContext.typeList() != null)
            {
                inClass.InterfaceList.AddRange(inClassContext.typeList().typeType()
                                               .Select(inItem => GetTypeContainer(inItem)));
            }
            inClass.ModifierList.Add("class");
            var tmpComment = "";

            if (inClassContext.typeType() != null)
            {
                inClass.InterfaceList.Insert(0, GetTypeContainer(inClassContext.typeType()));
            }

            var tmpClassBoy = inClassContext.classBody();

            tmpComment = ManageClassBodyContext(inClass, tmpComment, tmpClassBoy);
        }
Пример #5
0
    public ClassDeclarationContext classDeclaration()
    {
        ClassDeclarationContext _localctx = new ClassDeclarationContext(Context, State);

        EnterRule(_localctx, 0, RULE_classDeclaration);
        int _la;

        try {
            EnterOuterAlt(_localctx, 1);
            {
                State = 10; Match(T__0);
                State = 11; className();
                State = 12; Match(T__1);
                State = 16;
                ErrorHandler.Sync(this);
                _la = TokenStream.LA(1);
                while (_la == ID)
                {
                    {
                        {
                            State = 13; method();
                        }
                    }
                    State = 18;
                    ErrorHandler.Sync(this);
                    _la = TokenStream.LA(1);
                }
                State = 19; Match(T__2);
            }
        }
        catch (RecognitionException re) {
            _localctx.exception = re;
            ErrorHandler.ReportError(this, re);
            ErrorHandler.Recover(this, re);
        }
        finally {
            ExitRule();
        }
        return(_localctx);
    }
Пример #6
0
        private void ParseNode(IParseTree node)
        {
            if (node is PackageDeclarationContext packageContext)
            {
                string name = this.GetNodeName(packageContext);

                this.WriteKeyValue("Package", name);
            }
            else if (node is ImportDeclarationContext importContext)
            {
                string name = this.GetNodeName(importContext);

                this.WriteKeyValue("Import", name);
            }
            else if (node is TypeDeclarationContext typeContext)
            {
                foreach (var child in typeContext.children)
                {
                    if (child is InterfaceDeclarationContext)
                    {
                        InterfaceDeclarationContext interfaceContext = child as InterfaceDeclarationContext;

                        string name = interfaceContext.IDENTIFIER().GetText();

                        this.WriteLine();
                        this.WriteKeyValue("Interface", name);
                        this.WriteBeginBrace();

                        var members = interfaceContext.interfaceBody().interfaceBodyDeclaration().Select(item => item.interfaceMemberDeclaration());

                        foreach (InterfaceMemberDeclarationContext member in members)
                        {
                            var constContext = member.constDeclaration();
                            if (constContext != null)
                            {
                                string constName = constContext.constantDeclarator(0).IDENTIFIER().GetText();

                                this.WriteLine($"Const field:{constName}");
                            }

                            InterfaceMethodDeclarationContext method = member.interfaceMethodDeclaration();
                            if (method != null)
                            {
                                string methodName = method.IDENTIFIER().GetText();

                                this.WriteKeyValue("Method", methodName);
                            }
                        }
                        this.WriteEndBrace();
                    }
                    else if (child is ClassDeclarationContext)
                    {
                        ClassDeclarationContext classContext = child as ClassDeclarationContext;
                        string name = this.GetNodeName(classContext);

                        this.WriteLine();
                        this.WriteLine($"Class:{name}");
                        this.WriteBeginBrace();

                        var members = classContext.classBody().classBodyDeclaration().Select(item => item.memberDeclaration());

                        foreach (MemberDeclarationContext member in members)
                        {
                            FieldDeclarationContext field = member.fieldDeclaration();
                            if (field != null)
                            {
                                string fieldName = field.variableDeclarators().GetText();

                                this.WriteKeyValue("Field", fieldName);
                            }

                            MethodDeclarationContext method = member.methodDeclaration();
                            if (method != null)
                            {
                                string methodName = method.IDENTIFIER().GetText();

                                this.WriteKeyValue("Method", methodName);
                            }
                        }

                        this.WriteEndBrace();
                    }
                }
            }
        }
Пример #7
0
 public static ClassDeclaration ToAst(this ClassDeclarationContext classDeclarationContext)
 {
     return(new ClassDeclaration(classDeclarationContext.Identifier()[0].GetText(), classDeclarationContext.Identifier().Length > 1 ? classDeclarationContext.Identifier()[1].GetText() : null, classDeclarationContext.varDeclaration().Select(varContext => varContext.ToAst()).ToArray(), classDeclarationContext.methodDeclaration().Select(methodContext => methodContext.ToAst()).ToArray()));
 }