vb6parse 0.5.0

vb6parse is a library for parsing and analyzing VB6 code, from projects, to controls, to modules, and forms.
Documentation

Goals:

VB6Parse aims to be a complete, end-to-end parser library for VB6. Including, but not limited to:

  • (*.vbp) VB6 project files.
  • (*.bas) VB6 module files.
  • (*.vbw) VB6 windows files for determining editor windows when they are opened.
  • (*.frm) VB6 Forms.
  • (*.frx) VB6 Form Resource files.
  • (*.dsx) VB6 Data Environment files.
  • (*.dsr) VB6 Data Environment Resource files.
  • (*.cls) VB6 Class files.
  • (*.ttx) Crystal Report files.
  • (*.ctl) User Control files.
  • (*.dob) User Document files.

Current support:

First work has focused on the (vbp) project files since is the method to discover all other files that should be linked/referenced within a project.

  • Project Types
    • Exe
    • Control
    • OleExe
    • OleDll
  • References
  • Objects
  • Modules
  • Designers
  • Classes
  • Forms
  • UserControls
  • UserDocuments
  • ResFile32 - Partial support. Default value not correctly handled.
  • IconForm - Partial support. Default value not correctly handled.
  • Startup - Partial support. Default value not correctly handled.
  • HelpFile - Partial support. Default value not correctly handled.
  • Title - Partial support. Default value not correctly handled.
  • ExeName32 - Partial support. Default value not correctly handled.
  • Command32 - Partial support. Default value not correctly handled.
  • Name - Partial support. Default value not correctly handled.
  • HelpContextID - Partial support. Default value not correctly handled.
  • CompatibleMode - Partial support. Default value not correctly handled.
  • NoControlUpgrade - Full support for the 'ActiveX Control Upgrade' option, including the default or empty reverting to true.
  • MajorVer - Partial support. Default value not correctly handled.
  • MinorVer - Partial support. Default value not correctly handled.
  • RevisionVer - Partial support. Default value not correctly handled.
  • AutoIncrementVer - Partial support. Default value not correctly handled.
  • ServerSupportFiles
  • VersionCompanyName
  • VersionFileDescription
  • VersionLegalCopyright
  • VersionLegalTrademarks
  • VersionProductName
  • CondComp
  • CompilationType
  • OptimizationType
  • NoAliasing
  • CodeViewDebugInfo
  • FavorPentiumPro(tm) - Yes, this is exactly what this looks like inside the project file, '(tm)' and all.
  • BoundsCheck
  • OverflowCheck
  • FlPointCheck
  • FDIVCheck
  • UnroundedFP
  • StartMode
  • Unattended
  • Retained
  • ThreadPerObject
  • MaxNumberOfThreads
  • DebugStartOption
  • AutoRefresh
  • Header
  • VB6 Token stream lexed
  • Header
  • VB6 Token stream lexed
  • Header

    • Create Forms.
    • Create MDIForms.
    • Create Menu controls.
    • Create Frame controls.
    • Create CheckBox controls.
    • Create ComboBox controls.
    • Create CommandButton controls.
    • Create Data controls.
    • Create DirListBox controls.
    • Create DriveListBox controls.
    • Create FileListBox controls.
    • Create Image controls.
    • Create Label controls.
    • Create Line controls.
    • Create ListBox controls.
    • Create OLE controls.
    • Create OptionButton controls.
    • Create PictureBox controls.
    • Create HScrollBar controls.
    • Create VScrollBar controls.
    • Create Shape controls.
    • Create TextBox controls.
    • Create Timer controls.
    • Create UserControl controls.
    • Load form property resources from frx files. (loads resources, but doesn't apply all of them to the correct property locations in all cases yet.)
  • VB6 Token Stream lexxed

  • Binary blobs.
  • List items.
  • Strings.

VB6Project API:

  • [-] Unit Testing.
  • Integration/End-to-End Testing.
  • Benchmarking.
  • Top level API finalization.
  • [-] Documentation.
  • [-] Examples.

Test:

Be sure to use git submodule update --init --recursive to get all integration test submodule data if you plan to run cargo test.