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

时间:2022-02-18 17:10:35
注意,不是那种几百行的,解释一下表达式和简单语句的。是近似vbs功能的,至少能完整的支持到函数等,如有class则更好。这样我好移植到android一类的非WINDOWS环境使用。
多谢:) !!!求语法类似vbscript的解释器代码

52 个解决方案

#1


!!!求语法类似vbscript的解释器代码
干吗这想法…………

#2


当然有意义,我昨天还草草归纳了几个级别的需求

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

一星级:代码格式化,

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

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

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

五星级:
完整的编译器或解释器(JIT等)

#3


开源的Basic解释器又很多,自己去github或者sourceforge找找。

你所谓的几个“星级”,其实就是编译过程的几个阶段:
语法高亮属于词法分析
代码格式化属于语法分析(不知道你为啥把它排在语法高亮的前面)
代码翻译属于中间代码生成(构造抽象语法树,AST)
编译器、JIT属于代码优化和目标代码生成
高级计算器不知道有多高级,不过一般视作简单的代码解释器

#4


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

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

#5


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

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


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

#6


引用 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分支的换成你自己的就行了。

#7


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

#8


本帖最后由 bcrun 于 2013-10-01 11:10:59 编辑
引用 6 楼 caozhy 的回复:
呵呵,我大学的时候学编译原理写过一个和这个差不多的,前后花了一个星期的时间,但是代码现在实在找不到了。这个网上的我看了下,就他给的功能来看,难度应该和我当初写的差不多,所以推荐给你了。

不知道你为什么不能通读,


我说的能通读是指的那些网站上搜parser,interpreter这类关键字,一搜就是数百个结果,要全遍历一次太难。
你发的那个,我还是收藏了的,毕竟代码比较短,可以抽个合适的时间仔细看下实现。不过他说明中看得出的几处不足之处,我觉得改起来也不容易:
  1,没有string类型,给了个字符数组char[]这样的,想加string恐怕不容易。
  2,调用函数的语句竟然只能直接赋值给变量,而不能是a=fun1(33)+b这样的表达多,太怪异了
至于一些习惯用(括号的地方,他那用的是{,也够怪异的,希望这个能像预期一样,在parser的代码中好改。

哈哈,我考虑先看看TypeScript,ProcessingJs这类把其它语法语言翻译成js的代码好不好懂,毕竟能跑js的环境更多一些,比如客户端网页中:)

哈哈,不少basic解释器只能用行basic,连函数都不支持,比如这个http://www.codeproject.com/Articles/5202/MyBasic-A-Custom-BASIC-language-interpreter-writte

#9


参考Lua源代码?

#10


下载个ruby吧,据说作者发明了1000种语言,只有ruby最入法眼,目前已经得到很广泛的推广。 本身ruby也开源的。 可以读一读。

#11


引用 9 楼 zhao4zhong1 的回复:
参考Lua源代码?

汗一个

这帖置顶也没什么回复,郁闷中……

#12


今天在sourceforge上搜到一个今天新建的Basic interpreter,下载了仔细一看,只支持行BASIC,就是最多到GOSUB,RETURN跳转这样的语法

Open Basic interpreter for embedding
http://sourceforge.net/projects/obasic/?source=directory

#13


TinyC ?

#14


这个确实不容易.....

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

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

到现在我也是在考虑找一款别人写好的成熟的整套了,自认没那能力能整好这一整套 !!!求语法类似vbscript的解释器代码

#15


而且看起来bcrun所说的也是类似我的那种要求,需要大部分的细节都比较完善的,难啊.

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

想想全世界多少人都写过基本的操作系统,但能成功发展起来的却没多少,应该就是这8020法则了.
所以bcrun要是找到合适的,麻烦也告诉我一声,我也要 !!!求语法类似vbscript的解释器代码

#16


引用 14 楼 myjian 的回复:
到现在我也是在考虑找一款别人写好的成熟的整套了,自认没那能力能整好这一整套 !!!求语法类似vbscript的解释器代码


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

#17


Re:"主框架其实还好,主要是各种细节,比如词法分析中的容错,自动格式化,参数识别等等等等,要做成一个产品的话那真不是一般人能干好的."
说到这个,光一个代码编辑器中的转到“定义”位置功能,那些脚本类的IDE,都很大程度上是转不了的,更不说自动提示等等了。

规模方面,第一步,真的是只需要一个用10%代码规模来实现10%的最常用基本语法的。

#18


我也不想多说什么了,道理应该懂的。

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

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

#19


引用 16 楼 bcrun 的回复:
Quote: 引用 14 楼 myjian 的回复:


到现在我也是在考虑找一款别人写好的成熟的整套了,自认没那能力能整好这一整套 !!!求语法类似vbscript的解释器代码


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

就是没找到啊!做一个能商品化的编译器谈何容易!你看看现在全世界商品化的编译器才多少啊 !!!求语法类似vbscript的解释器代码

所以要是大家找到合适的,一定记着推荐一下啊,好东西要大家分享.

#20


再来围观一下,看看楼主的进展。
!!!求语法类似vbscript的解释器代码

#21


引用 楼主 bcrun 的回复:
注意,不是那种几百行的,解释一下表达式和简单语句的。是近似vbs功能的,至少能完整的支持到函数等,如有class则更好。这样我好移植到android一类的非WINDOWS环境使用。
多谢:) !!!求语法类似vbscript的解释器代码


自己写一个呗

#22


路过,学习...

#23


等待大神 !!!求语法类似vbscript的解释器代码

#24


Ruby是不是开源的?

#25


我这里主要是关注的BASIC系的语法。主要的目的是针对非职业程序员的,毕竟这些人可能更容易上手BASIC这类语法一些,而且现实中像会用一点VBA的办公室人员也不少是不。
如果不考虑上手难易,现在各种平台上最容易使用的脚本可能算是javascript了。
当然,如果你能用js做一个实用性较强的basic解释器(如前所述,不是只解释点行BASIC玩玩)就更好了:)

#26


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

#27


路过,学习 !!!求语法类似vbscript的解释器代码

#28


帮看看....

#29


哎,其实微软的VBA环境就挺好,就是OFFICE里面内嵌的那个.

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

#30


引用 29 楼 myjian 的回复:
哎,其实微软的VBA环境就挺好,就是OFFICE里面内嵌的那个.

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


对啊,就是因为有限制啊,连模仿MS OFFICE的WPS office都没有捆绑而要再另装什么的啊(实际结果是没几个人会装).实际上BASIC的语法相对简单,光国内就有不少个人和组织有能力搞出一定成熟度的产品啊,就是没人真心在搞。

#31


我查了一下,说是VBA SDK不再提供注册,也就是说想买正版都没得买了.....

#32


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

#33


该回复于2013-12-08 12:30:09被版主删除

#34


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

#35


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

#36


谈的都比较深奥,学习

#37


引用 36 楼 rkdrc 的回复:
谈的都比较深奥,学习

不明觉厉是这个意思吧,哈哈~
其实就LZ的需要,一般人应该是没有系统性的东西,即便有,估计也不会在这里发出来。
说实在的,这个真正想能运用起来,还得自己花点功夫去研究整理。。

#38


路过,学习也

#39


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

#40


该回复于2014-02-28 16:39:46被版主删除

#41


例如msscript.control script.ocx这个可以轻松实现,

#42


路过》。。。。。。。。。。。。。。。 !!!求语法类似vbscript的解释器代码

#43


类似vbs的少吧,js的到挺多开源的

#44


新手学习中,期待大神的出现~~

#45


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

#46


初学者,同求

#47


我们正在开发支持类似VB.NET的脚本语言,纯面向对象的,不过是近乎强类型的语言。
符合你的最高星级的标准。
有兴趣联系我。QQ 632981X8 其中x换成1。
我可以对你开源,但是如果你能搞定移动平台下的,希望分享源码。

#48


引用 47 楼 websmart78 的回复:
我们正在开发支持类似VB.NET的脚本语言,纯面向对象的,不过是近乎强类型的语言。
符合你的最高星级的标准。
有兴趣联系我。QQ 632981X8 其中x换成1。
我可以对你开源,但是如果你能搞定移动平台下的,希望分享源码。


好的,静候佳音!

#50


我KAO! 这挖坟的挖的够深…………
!!!求语法类似vbscript的解释器代码

#1


!!!求语法类似vbscript的解释器代码
干吗这想法…………

#2


当然有意义,我昨天还草草归纳了几个级别的需求

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

一星级:代码格式化,

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

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

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

五星级:
完整的编译器或解释器(JIT等)

#3


开源的Basic解释器又很多,自己去github或者sourceforge找找。

你所谓的几个“星级”,其实就是编译过程的几个阶段:
语法高亮属于词法分析
代码格式化属于语法分析(不知道你为啥把它排在语法高亮的前面)
代码翻译属于中间代码生成(构造抽象语法树,AST)
编译器、JIT属于代码优化和目标代码生成
高级计算器不知道有多高级,不过一般视作简单的代码解释器

#4


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

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

#5


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

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


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

#6


引用 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分支的换成你自己的就行了。

#7


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

#8


本帖最后由 bcrun 于 2013-10-01 11:10:59 编辑
引用 6 楼 caozhy 的回复:
呵呵,我大学的时候学编译原理写过一个和这个差不多的,前后花了一个星期的时间,但是代码现在实在找不到了。这个网上的我看了下,就他给的功能来看,难度应该和我当初写的差不多,所以推荐给你了。

不知道你为什么不能通读,


我说的能通读是指的那些网站上搜parser,interpreter这类关键字,一搜就是数百个结果,要全遍历一次太难。
你发的那个,我还是收藏了的,毕竟代码比较短,可以抽个合适的时间仔细看下实现。不过他说明中看得出的几处不足之处,我觉得改起来也不容易:
  1,没有string类型,给了个字符数组char[]这样的,想加string恐怕不容易。
  2,调用函数的语句竟然只能直接赋值给变量,而不能是a=fun1(33)+b这样的表达多,太怪异了
至于一些习惯用(括号的地方,他那用的是{,也够怪异的,希望这个能像预期一样,在parser的代码中好改。

哈哈,我考虑先看看TypeScript,ProcessingJs这类把其它语法语言翻译成js的代码好不好懂,毕竟能跑js的环境更多一些,比如客户端网页中:)

哈哈,不少basic解释器只能用行basic,连函数都不支持,比如这个http://www.codeproject.com/Articles/5202/MyBasic-A-Custom-BASIC-language-interpreter-writte

#9


参考Lua源代码?

#10


下载个ruby吧,据说作者发明了1000种语言,只有ruby最入法眼,目前已经得到很广泛的推广。 本身ruby也开源的。 可以读一读。

#11


引用 9 楼 zhao4zhong1 的回复:
参考Lua源代码?

汗一个

这帖置顶也没什么回复,郁闷中……

#12


今天在sourceforge上搜到一个今天新建的Basic interpreter,下载了仔细一看,只支持行BASIC,就是最多到GOSUB,RETURN跳转这样的语法

Open Basic interpreter for embedding
http://sourceforge.net/projects/obasic/?source=directory

#13


TinyC ?

#14


这个确实不容易.....

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

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

到现在我也是在考虑找一款别人写好的成熟的整套了,自认没那能力能整好这一整套 !!!求语法类似vbscript的解释器代码

#15


而且看起来bcrun所说的也是类似我的那种要求,需要大部分的细节都比较完善的,难啊.

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

想想全世界多少人都写过基本的操作系统,但能成功发展起来的却没多少,应该就是这8020法则了.
所以bcrun要是找到合适的,麻烦也告诉我一声,我也要 !!!求语法类似vbscript的解释器代码

#16


引用 14 楼 myjian 的回复:
到现在我也是在考虑找一款别人写好的成熟的整套了,自认没那能力能整好这一整套 !!!求语法类似vbscript的解释器代码


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

#17


Re:"主框架其实还好,主要是各种细节,比如词法分析中的容错,自动格式化,参数识别等等等等,要做成一个产品的话那真不是一般人能干好的."
说到这个,光一个代码编辑器中的转到“定义”位置功能,那些脚本类的IDE,都很大程度上是转不了的,更不说自动提示等等了。

规模方面,第一步,真的是只需要一个用10%代码规模来实现10%的最常用基本语法的。

#18


我也不想多说什么了,道理应该懂的。

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

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

#19


引用 16 楼 bcrun 的回复:
Quote: 引用 14 楼 myjian 的回复:


到现在我也是在考虑找一款别人写好的成熟的整套了,自认没那能力能整好这一整套 !!!求语法类似vbscript的解释器代码


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

就是没找到啊!做一个能商品化的编译器谈何容易!你看看现在全世界商品化的编译器才多少啊 !!!求语法类似vbscript的解释器代码

所以要是大家找到合适的,一定记着推荐一下啊,好东西要大家分享.

#20


再来围观一下,看看楼主的进展。
!!!求语法类似vbscript的解释器代码

#21


引用 楼主 bcrun 的回复:
注意,不是那种几百行的,解释一下表达式和简单语句的。是近似vbs功能的,至少能完整的支持到函数等,如有class则更好。这样我好移植到android一类的非WINDOWS环境使用。
多谢:) !!!求语法类似vbscript的解释器代码


自己写一个呗

#22


路过,学习...

#23


等待大神 !!!求语法类似vbscript的解释器代码

#24


Ruby是不是开源的?

#25


我这里主要是关注的BASIC系的语法。主要的目的是针对非职业程序员的,毕竟这些人可能更容易上手BASIC这类语法一些,而且现实中像会用一点VBA的办公室人员也不少是不。
如果不考虑上手难易,现在各种平台上最容易使用的脚本可能算是javascript了。
当然,如果你能用js做一个实用性较强的basic解释器(如前所述,不是只解释点行BASIC玩玩)就更好了:)

#26


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

#27


路过,学习 !!!求语法类似vbscript的解释器代码

#28


帮看看....

#29


哎,其实微软的VBA环境就挺好,就是OFFICE里面内嵌的那个.

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

#30


引用 29 楼 myjian 的回复:
哎,其实微软的VBA环境就挺好,就是OFFICE里面内嵌的那个.

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


对啊,就是因为有限制啊,连模仿MS OFFICE的WPS office都没有捆绑而要再另装什么的啊(实际结果是没几个人会装).实际上BASIC的语法相对简单,光国内就有不少个人和组织有能力搞出一定成熟度的产品啊,就是没人真心在搞。

#31


我查了一下,说是VBA SDK不再提供注册,也就是说想买正版都没得买了.....

#32


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

#33


该回复于2013-12-08 12:30:09被版主删除

#34


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

#35


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

#36


谈的都比较深奥,学习

#37


引用 36 楼 rkdrc 的回复:
谈的都比较深奥,学习

不明觉厉是这个意思吧,哈哈~
其实就LZ的需要,一般人应该是没有系统性的东西,即便有,估计也不会在这里发出来。
说实在的,这个真正想能运用起来,还得自己花点功夫去研究整理。。

#38


路过,学习也

#39


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

#40


该回复于2014-02-28 16:39:46被版主删除

#41


例如msscript.control script.ocx这个可以轻松实现,

#42


路过》。。。。。。。。。。。。。。。 !!!求语法类似vbscript的解释器代码

#43


类似vbs的少吧,js的到挺多开源的

#44


新手学习中,期待大神的出现~~

#45


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

#46


初学者,同求

#47


我们正在开发支持类似VB.NET的脚本语言,纯面向对象的,不过是近乎强类型的语言。
符合你的最高星级的标准。
有兴趣联系我。QQ 632981X8 其中x换成1。
我可以对你开源,但是如果你能搞定移动平台下的,希望分享源码。

#48


引用 47 楼 websmart78 的回复:
我们正在开发支持类似VB.NET的脚本语言,纯面向对象的,不过是近乎强类型的语言。
符合你的最高星级的标准。
有兴趣联系我。QQ 632981X8 其中x换成1。
我可以对你开源,但是如果你能搞定移动平台下的,希望分享源码。


好的,静候佳音!

#49


#50


我KAO! 这挖坟的挖的够深…………
!!!求语法类似vbscript的解释器代码