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
.