// 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); } }
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); } }
internal override void Convert(VBNetCodeFileWriter writer) { if (IsOnNewLine) { writer.WriteIndent(); } writer.Write(CommentToken.Text); }
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"); }
// 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); } }
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); } } }
// 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); } } }
// 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); } }
internal override void Convert(VBNetCodeFileWriter writer) { writer.Write(Token.GetText()); }
// For demo internal override void Convert(VBNetCodeFileWriter writer) { CodeModels[0].Convert(writer); writer.Write(" = "); CodeModels[1].Convert(writer); }
// 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); } }