HI.各位。
好久没上来了。
这次,带来的是一个脚本引擎,暂时命名为龙脚本,取这个名字,是因为,该脚本引擎未来支持的一种方言,会是中文的语法。谁有好的名字,可以报给我哦。呵呵。
这个东东的features如下:
1、代码会被编译成中间代码--字节码,由自己的运行时解释该字节码,并执行。较边解释边执行,效率要高点。
2、有库的概念,若干个类的代码,可以编译成一个库文件(跟ActiveXDll,标准DLL没有任何关系),写其他库时可以引用该库,并使用其中的类。
3、介于基于对象、面向对象之间。
   所有数据类型,都是对象,包括String等基础数据类型,支持静态成员,静态变量,支持函数重载,暂时不支持继承。  Dim s As String
  s="龙脚本"
    '//下面这句代码将不支持
  MsgBox(Mid(s,2,2),64,"Tip") 
  
  '//你可以这么写
  Dim s As String="龙脚本 "
  Win.MsgBox(s.Substring(1,2),64,"Tip")       
  Win.MsgBox(s.TrimEnd.Length,64,"Tip") 
   '//所有的函数都封装在对象里4、强类型。
   所有变量,声明了才能使用,而且要有准确的数据类型。
5、支持结构
6、支持动态数组和Fix数组。但是仅仅支持一维使用。
7、类可以写构造函数,并且支持重载。
8、类可以写析构函数。
9、类实例变量,可以不New,直接使用,如果是个Nothing,引擎将自动创建一个新实例。供调用。
10、类的成员,可以是属性(Get,Set),函数(有返回值)和方法(无返回值)。
11、成员可以是Private,Public,Friend几种。
12、支持指针。
13、脚本的数据支持外部访问,在内存分布上,和VB的一致,为其和宿主进行交互通信提供方便。
也就是说,里面的String,Boolean和VB里的String、Boolean没有区别,并且可以传出来,外面的可以传入。
14、没有Set语句,所有数据类型的变量,都可以直接赋值
    
     Dim o     As Cat
     o=New Cat(lLegsCount,lEyesCount)15、支持常见的语句
  For ,Loop,Do,Select,Goto等。
16、可以调用API和ActiveXDll。第一个版本的,会支持类似VB.NET的语法,和中文语法。未来会支持Java、C#风格的语法。
目前的运行时,是VB写的,速度比较慢,未来稳定的版本,会用C++或是PoB这样的东东重写。7月下旬,放出来,有兴趣测试的,留Email。对于测试有贡献的,未来可以免费提供在你的程序里使用。

解决方案 »

  1.   

    据说 .NET 下一个版本将增加语法树支持。所以普通开发者只要把词法分析写出来,都可以任意构造脚本引擎和领域语言了。
      

  2.   

    看穿了就是字符串处理,套了层壳而已。
    就像易语言,用vc++对一批汉语的“源码”分析了后做出预定的动作即可,本质还是vc++,封装了而已。
      

  3.   

    好几天没上来了。
    刚刚看了下。
    感谢大家的回复。
    To sysdzw,字符串处理,仅仅在词法分析部分,后续的其他的,诸如语法语义分析、目标代码的生成、语法错误的处理、目标代码(中间代码)执行时的存储分配(比如各个数据类型的内存分配和管理,String,首先用CoTaskMemAlloc在分配Length+6个字节的内存,0-3位填充字节数,最后2位,填充0,返回的是第4位的内存地址) 运行时栈的管理,对象引用计数、生命周期的管理等等,再如,所有代码翻译成的中间代码,是我自己定义的一个指令集,比如Jmp,转向目标地址,Goto语句,For循环,Loop语句中都会生成包含Jmp代码的东东,比如DefineArray,是创建数组,或是重定义数组,Invoke,是调用非静态成员,InvokeStatic,调用静态成员,这些指令的实现,目前是用VB写的,其实它可以用任意的语言去写,如果你牛,可以用汇编或是机器码,这些跟字符串处理没有任何关系。
    另外,“用vc++对一批汉语的“源码”分析了后做出预定的动作即可,本质还是vc++,封装了而已”
    其实大多语言,都是这么做的,比如Ruby,Js等,这个东东,我写的原始模板是英文关键字,可以用Define语句,定义中文关键字,其实在它的处理上,是没有分英文中文。
    另外,本质是vC++,如果这么说,JAVA也只是VC++,VC++,也只是机器码,封装了一下而已,因为在Windows下,Java虚拟机有VC6版本的,我的指令集,很大部分,是参考JAVA虚拟机指令集的。
    编译的过程,就是一个翻译的过程,一个语言翻译到另一个语言的过程,这个工作,可不是简单封装。To shendun2007
    我见过一款中文HTML,出了一款中文HTML翻译软件,作者用的是Replace的方法,把中文标签替换成英文,比如《头》替换成<head>,我可以告诉你,我没有那么幸运可以这么简单的处理用户输入的代码。如果那样的话,写个自己的脚本语言,那真的跟切个白菜一个样简单了。当然了,未来,语言引擎自动生成的工具出现的话,另当别论,我始终坚信这一天会很快到来。我建议,有兴趣的人,学习学习编译原理,自己写个语言看看,我想你可以了解更多。
      

  4.   

    以前写过一个简单的脚本解释执行的,没涉及到内存分配对象管理地址操作之类的,没楼主的这么高级。大家有兴趣研究的可以装个ruby,在安装目录下有个src文件夹,里面都是vc++源码。据说ruby的作者松本行弘创造了几百种语言,只有ruby是最出名被广泛推广的。
      

  5.   

    theforever太牛逼了。拿几个大作,让大家拜读拜读。
      

  6.   

    特讨厌一种人,感觉越是把别人说的一文不值。自己就越牛B似的。
    牛逼的人,这么成长起来,似乎太容易了。
    我没想弄的多有特色,走VB.NET语法,是想让更多的人接受这个脚本的语法。
    就跟大多的脚本语言,要么是Basic系的,要么是C系的,很少有自己搞个让人陌生的语法的。
      

  7.   

    支持,有的人就喜欢说三道四,不损别人日子就过不下去了希望快点出现哈,不过VB写的Basic系的还是比较少的
      

  8.   

    谢谢老马的支持哈。To llp5431
    VB写的Basic系的还是比较多的。
    我看过的开源的比较不错的是SmallBasic
    纯VB实现
    http://sourceforge.net/projects/sbi/
    这个地址可以下载源码,获得相关信息。