Esempio n. 1
0
        public VBBaseModel FirstModel = null;     // The first model created by this visitor.

        internal VB6CodeModelVisitor(VBBaseModule rootModule, VBBaseCodeModel parentCodeBlock, VisualBasic6Lexer vb6Lexer, VisualBasic6Parser vb6Parser, CommonTokenStream commonTokenStream)
        {
            _rootModule        = rootModule;
            _vb6Lexer          = vb6Lexer;
            _vb6Parser         = vb6Parser;
            _commonTokenStream = commonTokenStream;
            _parentCodeBlock   = parentCodeBlock;

            _codeModelFactory = new VB6CodeModelFactory(_rootModule, _parentCodeBlock);
        }
Esempio n. 2
0
        public VBBaseModule CreateModuleCodeModels(VisualBasic6Parser.ModuleContext context)
        {
            // Create & extract module level metadata
            _moduleCodeModel = CreateModule(_fileType, context);
            var moduleVisitor = new VB6ModuleVisitor(_moduleCodeModel, _vb6Lexer, _vb6Parser, _commonTokenStream);

            moduleVisitor.Visit(context);
            moduleVisitor.PostProcess();

            // Visit code blocks to create code object model for analysis & conversion.
            var codeModelVisitor = new VB6CodeModelVisitor(_moduleCodeModel, _moduleCodeModel, _vb6Lexer, _vb6Parser, _commonTokenStream);

            codeModelVisitor.Visit(context.moduleBody());
            codeModelVisitor.PostProcess();

            return(_moduleCodeModel);
        }
Esempio n. 3
0
        internal VB6ModuleVisitor(VBBaseModule rootModule, VisualBasic6Lexer vb6Lexer, VisualBasic6Parser vb6Parser, CommonTokenStream commonTokenStream)
        {
            _rootModule        = rootModule;
            _vb6Lexer          = vb6Lexer;
            _vb6Parser         = vb6Parser;
            _commonTokenStream = commonTokenStream;

            // Filter out VB6 generated comments. Just discard all comments until the last Attribute statement. (Look at VB6 source file with notepad instead of VB6 IDE. It is not shown in IDE.)
            var lastAttributeStmt = (from itm in _commonTokenStream.Get(0, _commonTokenStream.Size)
                                     where (itm.Type == VisualBasic6Parser.ATTRIBUTE)
                                     select itm).LastOrDefault();

            if (lastAttributeStmt != null)
            {
                // Note: This will get token position for the keyword "Attribute", not very accurate, but enough to start.
                _rootModule.LastScanTokenIndex = lastAttributeStmt.TokenIndex;
            }
        }