寻找用OCaml编写的VBA/VB解析器/编译器

Sof*_*mur 2 vb.net compiler-construction parsing vba ocaml

我打算编写一个编译器(包括解析器)OCaml来解析和运行VBA或/和VB程序.我已经为简单的命令式语言做了这个,但我不知道如何处理VBAor和VB... 的"对象"功能.

有谁知道我能激发的任何现有工作吗?

Ira*_*ter 5

不是OCaml解决方案(但OP问):

我们的DMS软件再造工具包是通用程序分析和转换机制.它旨在成为计算机语言定制软件工程工具的便利基础,目标是帮助工具工程师完成工作,而不是花时间重新发明轮子.特别是,许多人认为获得解析器是工作的重要组成部分.这简直是​​假的.见解析后的生活.

DMS具有许多语言的生产前端,包括现代和传统语言,包括各种方言的Visual Basic(VB6,VBA [基本上与VB6相同])和VB.net.

通过生产我的意思是已经应用于具有相当大的实际代码系统并处理所有相应的解析问题.这对于遗留语言来说相当困难,例如VB,尤其是较老的方言,因为这些语言通常记录不完整(特别是VB6和VBA).实现这一目标的唯一方法是构建一个草案解析器,针对现实运行它,并修改直到许多代码通过合理的方式.这通常需要比草稿解析器更长的时间,因为它不容易理解错误(它们没有文档!),你必须决定它们是真的还是代码库只是垃圾(比你想象的更频繁) ),猜猜它对语法意味着什么并再次尝试.

这些前端作为最小的解析源代码和构建AST; 他们还可以反转此过程以重新生成合法的可编译代码,并将注释作为源文本文件返回.VisualBasic前端执行此操作.我们的一些其他前端(C,C++,Java,COBOL)更进一步:名称/类型分辨率,流量分析等; 他们通过从语言特定的AST收集关键程序事实,然后应用DMS提供的机器来计算结果.如果这些事实有用,这对于VisualBasic也是可能的.

  • ......这通常比人们预期的要多*吨*,特别是如果他们之前没有这样做的话.我们不会阻止您这样做,但实际所需的工作量和细节数量通常会阻止人们实现目标.我们提供DMS作为实现复杂代码分析和转换任务所需的典型机器的集成包.我们拥有约50人年的博士水平工程,这是由人们需要和反馈的经验所驱动的.你的举动. (2认同)