当前位置:编程学习 > VB >>

!!!求语法类似vbscript的解释器代码

注意,不是那种几百行的,解释一下表达式和简单语句的。是近似vbs功能的,至少能完整的支持到函数等,如有class则更好。这样我好移植到android一类的非WINDOWS环境使用。
多谢:) vbscript
干吗这想法…………
当然有意义,我昨天还草草归纳了几个级别的需求

编译原理及解释类应用设想:

一星级:代码格式化,

二星级:
语法加亮,如能识别变量定义位置,则加分

三星级:
高级计算器(至少能定义多个变量,定义和调用函数,)

四星级:
代码翻译器(在不同语言间翻译,这个肯定会有一些限制,特别是一些语言的很特别的写法)

五星级:
完整的编译器或解释器(JIT等)
开源的Basic解释器又很多,自己去github或者sourceforge找找。

你所谓的几个“星级”,其实就是编译过程的几个阶段:
语法高亮属于词法分析
代码格式化属于语法分析(不知道你为啥把它排在语法高亮的前面)
代码翻译属于中间代码生成(构造抽象语法树,AST)
编译器、JIT属于代码优化和目标代码生成
高级计算器不知道有多高级,不过一般视作简单的代码解释器 根据你的要求,我找了一个差不多功能,难易适中的源代码
http://www.codeproject.com/Articles/8924/A-simple-hand-coded-script-parser
刚刚好支持了基本的数据类型、结构化控制和函数调用

不过它是C-Like的(我觉得介于C-Like和Basic-Like之间)
引用 4 楼 caozhy 的回复:
根据你的要求,我找了一个差不多功能,难易适中的源代码
http://www.codeproject.com/Articles/8924/A-simple-hand-coded-script-parser
刚刚好支持了基本的数据类型、结构化控制和函数调用

不过它是C-Like的(我觉得介于C-Like和Basic-Like之间)


看了说明,这个肯定不适用的。那些网站我自然也是去找过的,但无法通读。发帖在这里,自然也是因为群众的眼镜是雪亮的,没准谁就见过一个合适的。
其实以前也有人在论坛里说他自己做过类似vbscript的解释器,不过没有后文。
引用 5 楼 bcrun 的回复:
Quote: 引用 4 楼 caozhy 的回复:

根据你的要求,我找了一个差不多功能,难易适中的源代码
http://www.codeproject.com/Articles/8924/A-simple-hand-coded-script-parser
刚刚好支持了基本的数据类型、结构化控制和函数调用

不过它是C-Like的(我觉得介于C-Like和Basic-Like之间)


看了说明,这个肯定不适用的。那些网站我自然也是去找过的,但无法通读。发帖在这里,自然也是因为群众的眼镜是雪亮的,没准谁就见过一个合适的。
其实以前也有人在论坛里说他自己做过类似vbscript的解释器,不过没有后文。


呵呵,我大学的时候学编译原理写过一个和这个差不多的,前后花了一个星期的时间,但是代码现在实在找不到了。这个网上的我看了下,就他给的功能来看,难度应该和我当初写的差不多,所以推荐给你了。

不知道你为什么不能通读,解释器其实最主要的就是DFA/NFA做词法分析还有递归下降语法分析器。如果你只是修改下词法,直接在代码中找到那一坨switch分支的换成你自己的就行了。 本帖最后由 bcrun 于 2013-10-01 11:10:59 编辑 参考Lua源代码? 下载个ruby吧,据说作者发明了1000种语言,只有ruby最入法眼,目前已经得到很广泛的推广。 本身ruby也开源的。 可以读一读。
引用 9 楼 zhao4zhong1 的回复:
参考Lua源代码?

汗一个

这帖置顶也没什么回复,郁闷中…… 今天在sourceforge上搜到一个今天新建的Basic interpreter,下载了仔细一看,只支持行BASIC,就是最多到GOSUB,RETURN跳转这样的语法

Open Basic interpreter for embedding
http://sourceforge.net/projects/obasic/?source=directory TinyC ? 这个确实不容易.....

之前我写过一个编译器+IDE,是用于某司定制的一款PLC的,语法类似汇编,支持简单的内存管理,实现了流程控制等基本功能,已经觉得挺费劲了.

主框架其实还好,主要是各种细节,比如词法分析中的容错,自动格式化,参数识别等等等等,要做成一个产品的话那真不是一般人能干好的.

到现在我也是在考虑找一款别人写好的成熟的整套了,自认没那能力能整好这一整套 而且看起来bcrun所说的也是类似我的那种要求,需要大部分的细节都比较完善的,难啊.

自己做过很多事之后才明白,真正考水平的是最后20%.......前面80%几乎很多人都能做到.

想想全世界多少人都写过基本的操作系统,但能成功发展起来的却没多少,应该就是这8020法则了.
所以bcrun要是找到合适的,麻烦也告诉我一声,我也要
引用 14 楼 myjian 的回复:
到现在我也是在考虑找一款别人写好的成熟的整套了,自认没那能力能整好这一整套


找到了吗,透露个名字可以不。我只知道有个paxscript算是这方面的,不过那个是pascal实现的,而且实现得太完整了,数万行代码。那么大的实现也不好移植是不。 Re:"主框架其实还好,主要是各种细节,比如词法分析中的容错,自动格式化,参数识别等等等等,要做成一个产品的话那真不是一般人能干好的."
说到这个,光一个代码编辑器中的转到“定义”位置功能,那些脚本类的IDE,都很大程度上是转不了的,更不说自动提示等等了。

规模方面,第一步,真的是只需要一个用10%代码规模来实现10%的最常用基本语法的。 我也不想多说什么了,道理应该懂的。

无论你是找人做还是找现成的,前提都是你自己必须懂编译原理。如果你想自己当老板,最难的10%都是你的事,你搞不定,你表指望你的手下能搞定。这10%往往决定了有的东西你根本不能做,那你即使会做90%也没用。

我做过解释器,也曾经在不懂编译原理的时候尝试过,我可以负责任地说,不懂编译原理做不出解释器。因为书上的知识我都搞明白了。所以,无论什么规模的语言,我都可以实现,我也可以接手这样的源代码并且去维护。唯一要考虑的就是时间长短、钱多钱少的问题了。
引用 16 楼 bcrun 的回复:
Quote: 引用 14 楼 myjian 的回复:


到现在我也是在考虑找一款别人写好的成熟的整套了,自认没那能力能整好这一整套


找到了吗,透露个名字可以不。我只知道有个paxscript算是这方面的,不过那个是pascal实现的,而且实现得太完整了,数万行代码。那么大的实现也不好移植是不。

就是没找到啊!做一个能商品化的编译器谈何容易!你看看现在全世界商品化的编译器才多少啊

所以要是大家找到合适的,一定记着推荐一下啊,好东西要大家分享. 再来围观一下,看看楼主的进展。
引用 楼主 bcrun 的回复:
注意,不是那种几百行的,解释一下表达式和简单语句的。是近似vbs功能的,至少能完整的支持到函数等,如有class则更好。这样我好移植到android一类的非WINDOWS环境使用。
多谢:)


自己写一个呗 路过,学习... 等待大神 Ruby是不是开源的? 我这里主要是关注的BASIC系的语法。主要的目的是针对非职业程序员的,毕竟这些人可能更容易上手BASIC这类语法一些,而且现实中像会用一点VBA的办公室人员也不少是不。
如果不考虑上手难易,现在各种平台上最容易使用的脚本可能算是javascript了。
当然,如果你能用js做一个实用性较强的basic解释器(如前所述,不是只解释点行BASIC玩玩)就更好了:) 路过,学习 帮看看.... 哎,其实微软的VBA环境就挺好,就是OFFICE里面内嵌的那个.

只是那东西貌似微软限制得非常严格,没有外流(之前见到一个帖子有人提供下载,但当时没注意,结果没几天就删除了)
引用 29 楼 myjian 的回复:
哎,其实微软的VBA环境就挺好,就是OFFICE里面内嵌的那个.

只是那东西貌似微软限制得非常严格,没有外流(之前见到一个帖子有人提供下载,但当时没注意,结果没几天就删除了)


对啊,就是因为有限制啊,连模仿MS OFFICE的WPS office都没有捆绑而要再另装什么的啊(实际结果是没几个人会装).实际上BASIC的语法相对简单,光国内就有不少个人和组织有能力搞出一定成熟度的产品啊,就是没人真心在搞。 我查了一下,说是VBA SDK不再提供注册,也就是说想买正版都没得买了.....
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,