Ejemplo n.º 1
0
        internal override void Convert(VBNetCodeFileWriter writer)
        {
            var ctx = ParserContext as VisualBasic6Parser.ArgContext;

            // If ByVal/ByRef keyword is missing, VB6 defaults to ByRef, VB.net defaults to ByVal. Must specify ByRef in VB.net during conversion.
            if ((ctx.BYVAL() == null) && (ctx.BYREF() == null))
            {
                foreach (var model in CodeModels)
                {
                    if (model is VBAmbiguousIdentifier)
                    {
                        writer.Write("ByRef ");
                        model.Convert(writer);
                    }
                    else
                    {
                        model.Convert(writer);
                    }
                }
            }
            else
            {
                base.Convert(writer);
            }
        }
Ejemplo n.º 2
0
        // For Demo
        internal override void Convert(VBNetCodeFileWriter writer)
        {
            if (_isConstructor)
            {
                foreach (var model in CodeModels)
                {
                    switch (model)
                    {
                    case VBVisibility v:
                        var r = RootModule as VBClassModule;
                        if ((r.InstancingType == ClassInstancingType.Private) || (r.InstancingType == ClassInstancingType.PublicNotCreatable))
                        {
                            writer.Write("Private");
                        }
                        else
                        {
                            writer.Write("Public");
                        }
                        break;

                    case VBAmbiguousIdentifier a:
                        writer.Write("New");     // Replace "Class_Initialize" with VB.net "New" constructor
                        break;

                    default:
                        model.Convert(writer);
                        break;
                    }
                }
            }
            else
            {
                base.Convert(writer);
            }
        }
Ejemplo n.º 3
0
        internal override void Convert(VBNetCodeFileWriter writer)
        {
            if (IsOnNewLine)
            {
                writer.WriteIndent();
            }

            writer.Write(CommentToken.Text);
        }
Ejemplo n.º 4
0
 internal override void Convert(VBNetCodeFileWriter writer)
 {
     writer.NewLine();
     writer.WriteIndent();
     writer.WriteLine($"' #ISSUE: {ConversionMessage.Id}.");
     writer.WriteIndent();
     writer.WriteLine($"' Description: {ConversionMessage.Description}");
     writer.WriteIndent();
     writer.WriteLine($"' Required action: {ConversionMessage.RequiredAction}");
 }
Ejemplo n.º 5
0
 internal override void Convert(VBNetCodeFileWriter writer)
 {
     writer.Write($"Module {ModuleName}");
     writer.Indent();
     foreach (var model in CodeModels)
     {
         model.Convert(writer);
     }
     writer.Outdent();
     //writer.NewLine();
     writer.WriteLine("End Module");
 }
Ejemplo n.º 6
0
        // For Demo
        internal override void Convert(VBNetCodeFileWriter writer)
        {
            var ctx = ParserContext as VisualBasic6Parser.BaseTypeContext;

            if (ctx.VARIANT() != null)
            {
                writer.Write("Object");
            }
            else
            {
                base.Convert(writer);
            }
        }
Ejemplo n.º 7
0
 internal override void Convert(VBNetCodeFileWriter writer)
 {
     //// Default implementation is copy as it is. Override this in child classes for conversion.
     //writer.WriteIndent();
     if (CodeModels.Count == 0)
     {
         writer.Write(ParserContext.GetText());
     }
     else
     {
         foreach (var item in CodeModels)
         {
             item.Convert(writer);
         }
     }
 }
Ejemplo n.º 8
0
        // For Demo
        internal override void Convert(VBNetCodeFileWriter writer)
        {
            var ctx = ParserContext as VisualBasic6Parser.ICS_S_ProcedureOrArrayCallContext;

            foreach (var model in CodeModels)
            {
                if (model is VBAmbiguousIdentifier)
                {
                    var m = model as VBAmbiguousIdentifier;
                    if (m.ParserContext.GetText().Equals("IsEmpty", StringComparison.InvariantCultureIgnoreCase))
                    {
                        writer.Write("IsNothing");
                    }
                    else
                    {
                        model.Convert(writer);
                    }
                }
                else
                {
                    model.Convert(writer);
                }
            }
        }
Ejemplo n.º 9
0
        // For Demo
        internal override void Convert(VBNetCodeFileWriter writer)
        {
            var ctx      = ParserContext as VisualBasic6Parser.PropertySetStmtContext;
            var propName = ctx.ambiguousIdentifier().GetText();

            if (!RootModule.PropsSet.ContainsKey(propName))
            {
                return; // Already converted by another prop pair.
            }
            // Check if Get property pair exist
            VBPropertyGetStmt getProp = null;

            if (RootModule.PropsGet.ContainsKey(propName))
            {
                getProp = RootModule.PropsGet[propName];
            }


            // Convert to VB.net prop format: Public Property PropName(ByVal arg1 As DataType) As DataType
            if (PropVisibility != null)
            {
                PropVisibility.Convert(writer);
                writer.Write(" ");
            }

            if (PropStatic != null)
            {
                PropStatic.Convert(writer);
                writer.Write(" ");
            }

            if (getProp == null)
            {
                // Write only prop
                writer.Write("WriteOnly ");
            }

            writer.Write("Property ");
            PropName.Convert(writer);

            if (getProp != null)
            {
                // Use arg list & return type from Get prop if exist. It is the same with Set prop.
                if (getProp.PropTypeHint != null)
                {
                    getProp.PropTypeHint.Convert(writer);
                }

                getProp.PropArgList.Convert(writer);

                if (getProp.PropAsType != null)
                {
                    writer.Write(" ");
                    getProp.PropAsType.Convert(writer);
                }
            }
            else
            {
                // This is write only prop. Use arg list from Set prop.
                var propSetTypeHint = PropSetArg.CodeModels.OfType <VBTypeHint>().FirstOrDefault();
                if (propSetTypeHint != null)
                {
                    propSetTypeHint.Convert(writer);
                }

                writer.Write("(");
                if (PropArgs.Count > 0)
                {
                    int i = 0;
                    for (i = 0; i < PropArgs.Count - 1; i++)
                    {
                        PropArgs[i].Convert(writer);
                        writer.Write(", ");
                    }
                    PropArgs[i].Convert(writer); // Last one
                }
                writer.Write(")");

                var propSetAsType = PropSetArg.CodeModels.OfType <VBAsTypeClause>().FirstOrDefault();
                if (propSetAsType != null)
                {
                    writer.Write(" ");
                    propSetAsType.Convert(writer);
                }
            }

            var canConvert = false;

            if (getProp != null)
            {
                // Convert to VB.net Get prop code block (Get ... End Get)
                writer.NewLine();
                writer.Write("Get");
                writer.NewLine();

                foreach (var model in getProp.CodeModels)
                {
                    // Actual Get code block starts after a new line
                    if (canConvert)
                    {
                        model.Convert(writer);
                    }
                    else
                    {
                        canConvert = (model is VBNewLine);
                    }
                }

                //writer.NewLine();
                writer.Write("End Get");
            }

            // Convert to VB.net Set prop code block (Set ... End Set)
            writer.NewLine();
            writer.Write("Set(");
            PropSetArg.Convert(writer);
            writer.Write(")");
            writer.NewLine();

            canConvert = false;
            foreach (var model in this.CodeModels)
            {
                // Actual Set code block starts after a new line
                if (canConvert)
                {
                    model.Convert(writer);
                }
                else
                {
                    canConvert = (model is VBNewLine);
                }
            }

            //writer.NewLine();
            writer.Write("End Set");

            writer.NewLine();
            writer.Write("End Property");

            // Make sure to remove cache data from module, so that prop conversion is not duplicated.
            if (RootModule.PropsGet.ContainsKey(propName))
            {
                RootModule.PropsGet.Remove(propName);
            }

            if (RootModule.PropsSet.ContainsKey(propName))
            {
                RootModule.PropsSet.Remove(propName);
            }
        }
Ejemplo n.º 10
0
 internal override void Convert(VBNetCodeFileWriter writer)
 {
     writer.Write(Token.GetText());
 }
Ejemplo n.º 11
0
 // For demo
 internal override void Convert(VBNetCodeFileWriter writer)
 {
     CodeModels[0].Convert(writer);
     writer.Write(" = ");
     CodeModels[1].Convert(writer);
 }
Ejemplo n.º 12
0
 internal virtual void Convert(VBNetCodeFileWriter writer)
 {
 }
Ejemplo n.º 13
0
 internal override void Convert(VBNetCodeFileWriter writer)
 {
     writer.NewLine();
 }
Ejemplo n.º 14
0
        // For Demo
        internal override void Convert(VBNetCodeFileWriter writer)
        {
            var ctx      = ParserContext as VisualBasic6Parser.PropertyGetStmtContext;
            var propName = ctx.ambiguousIdentifier().GetText();

            if (!RootModule.PropsGet.ContainsKey(propName))
            {
                return; // Already converted by another prop pair.
            }
            // Check if Let property pair exist
            VBPropertyLetStmt letProp = null;

            if (RootModule.PropsLet.ContainsKey(propName))
            {
                letProp = RootModule.PropsLet[propName];
            }

            // Check if Set property pair exist
            VBPropertySetStmt setProp = null;

            if (RootModule.PropsSet.ContainsKey(propName))
            {
                setProp = RootModule.PropsSet[propName];
            }

            if (letProp != null)
            {
                // Let prop do the conversion
                letProp.Convert(writer);
                return;
            }

            if (setProp != null)
            {
                // Set prop do the conversion
                setProp.Convert(writer);
                return;
            }


            // Reach here if this is a read only prop
            // Convert to VB.net prop format: Public Property PropName(ByVal arg1 As DataType) As DataType
            if (PropVisibility != null)
            {
                PropVisibility.Convert(writer);
                writer.Write(" ");
            }

            if (PropStatic != null)
            {
                PropStatic.Convert(writer);
                writer.Write(" ");
            }

            if ((letProp == null) && (setProp == null))
            {
                // Read only prop
                writer.Write("ReadOnly ");
            }

            writer.Write("Property ");
            PropName.Convert(writer);


            // Use arg list & return type from Get prop
            if (PropTypeHint != null)
            {
                PropTypeHint.Convert(writer);
            }

            PropArgList.Convert(writer);

            if (PropAsType != null)
            {
                writer.Write(" ");
                PropAsType.Convert(writer);
            }

            // Convert to VB.net Get prop code block (Get ... End Get)
            writer.NewLine();
            writer.Write("Get");
            writer.NewLine();

            var canConvert = false;

            foreach (var model in CodeModels)
            {
                // Actual Get code block starts after a new line
                if (canConvert)
                {
                    model.Convert(writer);
                }
                else
                {
                    canConvert = (model is VBNewLine);
                }
            }
            writer.Write("End Get");

            writer.NewLine();
            writer.Write("End Property");

            // Make sure to remove cache data from module, so that prop conversion is not duplicated.
            if (RootModule.PropsGet.ContainsKey(propName))
            {
                RootModule.PropsGet.Remove(propName);
            }
        }