VB6 Parser / Lexer / Scripter
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB6 Parser / Lexer / Scripter相关的知识,希望对你有一定的参考价值。
我在VB6中有一款游戏,它的功能非常好,但是我一直在想着创建一个脚本引擎。我想我想要VB6为我读平面文本脚本文件然后lex / parse /执行它们。
我有很好的编程经验,之前我已经构建了一个简单的C编译器,以及一个LOGO模拟器。
我的问题是:我可以使用任何工具,比如Lexx / Yakk / Bison来帮助我吗?关于lexing,解析以及将命令反馈给VB6,我应该如何处理这个问题,以便我可以处理它们?从某种意义上来说,这个想法是一个不好的想法(例如,在装配中建造扫雷,虽然不是不可能的,但是非常困难,也是一个坏主意。)?
如果您愿意使用VBScript而不是VB6,您可能只需使用MSScriptControl
来运行命令而不是创建自己的命令。 Here是一篇讨论在.Net应用程序中使用它的文章,尽管它是一个ActiveX控件,所以应该给你很大的灵活性。
该控件可以从here下载。
使用Microsoft®Windows®脚本控件,因为它易于集成到现有的VB6应用程序中。该控件支持VBScript,JScript或任何其他“活动脚本”实现。
我在四个项目中使用了Windows脚本控件,效果非常好。很容易集成。我希望微软能给我们一个.NET的替代品,并使其易于使用。 (我知道在.NET中不需要控件,但是能够简单地创建一个处理所有内容的对象很好。)
Windows脚本控件
Microsoft®Windows®脚本控件是一种ActiveX®控件,可为开发人员提供一种简便的方法,使其应用程序可编写脚本。反过来,这使用户能够通过脚本扩展应用程序功能,就像今天的宏一样。
- 信息:在http://support.microsoft.com/kb/184739获取脚本控制的位置。包括指向其他支持文章的链接。
- 第13章:在http://msdn.microsoft.com/en-us/library/aa227413(VS.60).aspx上为您的应用程序添加脚本支持
- 在http://msdn.microsoft.com/en-us/library/aa227421(VS.60).aspx设计计算器
- 如何使用从http://support.microsoft.com/kb/184745插入的脚本控制模块和过程集合
- 如何使用从http://support.microsoft.com/kb/185697插入的脚本控件的AddObject方法
- 示例:SCRIPTEX.EXE使用ScriptControl与Visual Basic,从http://support.microsoft.com/kb/189484插入
- Windows脚本控制可以在http://www.microsoft.com/downloads/details.aspx?familyid=d7e31492-2595-49e6-8c02-1426fec693ac&displaylang=en下载。 (支持的操作系统:Windows 2000; Windows 98 Second Edition; Windows ME; Windows NT; Windows Server 2003; Windows XP)
- MSDN在http://social.msdn.microsoft.com/Search/en-US?query=%22MSScriptControl.ScriptControlClass%22&ac=8上搜索“MSScriptControl.ScriptControlClass”
- MSDN在http://social.msdn.microsoft.com/Search/en-US?query=%22Windows+Script+Control%22&ac=8上搜索“Windows Script Control”
- MSDN在http://social.msdn.microsoft.com/Search/en-US?query=MSSCRIPT&ac=8上搜索“MSSCRIPT”
除非你是为了自己的指示而做,否则你可能想尝试使用Lua:VB6 - Lua Integration
我实际上已经在VB6中看到了一些非常合理的编译器/解释器实现[1] - 它不是我选择的语言(很少有功能特性,不够静态的类型系统),但是凭借经验,你可以超过这些缺点并且效率很高 - 那么为什么不呢。
您可以使用支持VB6的GOLD parser generator作为开始。
[1]:在PSC的某个地方或在这个download repository我认为......
请注意,还有MSScriptControl。
VB6似乎还有一个替代方案:
SadScript是VB6的变种,最突出地用于VB6作为MMORPGS中的脚本引擎。
请参阅此处了解更多信息:What is sadscript? Can I use it in vb.net? Why hasn't anyone I have asked heard of it?
以上是关于VB6 Parser / Lexer / Scripter的主要内容,如果未能解决你的问题,请参考以下文章
Antlr4 Can‘t load Hello as lexer or parser