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

解决方案 »

  1.   

    当然有意义,我昨天还草草归纳了几个级别的需求编译原理及解释类应用设想:一星级:代码格式化,二星级:
    语法加亮,如能识别变量定义位置,则加分三星级:
    高级计算器(至少能定义多个变量,定义和调用函数,)四星级:
    代码翻译器(在不同语言间翻译,这个肯定会有一些限制,特别是一些语言的很特别的写法)五星级:
    完整的编译器或解释器(JIT等)
      

  2.   

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

  3.   

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

  4.   


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

  5.   


    看了说明,这个肯定不适用的。那些网站我自然也是去找过的,但无法通读。发帖在这里,自然也是因为群众的眼镜是雪亮的,没准谁就见过一个合适的。
    其实以前也有人在论坛里说他自己做过类似vbscript的解释器,不过没有后文。呵呵,我大学的时候学编译原理写过一个和这个差不多的,前后花了一个星期的时间,但是代码现在实在找不到了。这个网上的我看了下,就他给的功能来看,难度应该和我当初写的差不多,所以推荐给你了。不知道你为什么不能通读,解释器其实最主要的就是DFA/NFA做词法分析还有递归下降语法分析器。如果你只是修改下词法,直接在代码中找到那一坨switch分支的换成你自己的就行了。
      

  6.   


    我说的能通读是指的那些网站上搜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
      

  7.   

    参考Lua源代码?
      

  8.   

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

  9.   

    今天在sourceforge上搜到一个今天新建的Basic interpreter,下载了仔细一看,只支持行BASIC,就是最多到GOSUB,RETURN跳转这样的语法Open Basic interpreter for embedding
    http://sourceforge.net/projects/obasic/?source=directory
      

  10.   

    TinyC ?
      

  11.   

    这个确实不容易.....之前我写过一个编译器+IDE,是用于某司定制的一款PLC的,语法类似汇编,支持简单的内存管理,实现了流程控制等基本功能,已经觉得挺费劲了.主框架其实还好,主要是各种细节,比如词法分析中的容错,自动格式化,参数识别等等等等,要做成一个产品的话那真不是一般人能干好的.到现在我也是在考虑找一款别人写好的成熟的整套了,自认没那能力能整好这一整套
      

  12.   

    而且看起来bcrun所说的也是类似我的那种要求,需要大部分的细节都比较完善的,难啊.自己做过很多事之后才明白,真正考水平的是最后20%.......前面80%几乎很多人都能做到.想想全世界多少人都写过基本的操作系统,但能成功发展起来的却没多少,应该就是这8020法则了.
    所以bcrun要是找到合适的,麻烦也告诉我一声,我也要
      

  13.   


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

  14.   

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

  15.   


    找到了吗,透露个名字可以不。我只知道有个paxscript算是这方面的,不过那个是pascal实现的,而且实现得太完整了,数万行代码。那么大的实现也不好移植是不。
    就是没找到啊!做一个能商品化的编译器谈何容易!你看看现在全世界商品化的编译器才多少啊所以要是大家找到合适的,一定记着推荐一下啊,好东西要大家分享.
      

  16.   

    Ruby是不是开源的?
      

  17.   

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

  18.   

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

  19.   


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

  20.   

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

  21.   

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

  22.   

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

  23.   

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

  24.   

    看看这个:https://github.com/paladin-t/my_basic
      

  25.   

    我KAO! 这挖坟的挖的够深…………