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

龙脚本动态语言引擎预览,预计7月下旬发布

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。对于测试有贡献的,未来可以免费提供在你的程序里使用。


--------------------编程问答-------------------- 据说 .NET 下一个版本将增加语法树支持。所以普通开发者只要把词法分析写出来,都可以任意构造脚本引擎和领域语言了。 --------------------编程问答-------------------- 未来的软件领域,将会有数不清的语言。
这类自动构建语言的工具的出现,将是必然。
我曾看到过C#写的源码,输入一定的规则,输出词法分析和语法分析的源码。
当时没时间,就没仔细看。 --------------------编程问答-------------------- 顶一下 --------------------编程问答-------------------- 强烈支持一下 --------------------编程问答-------------------- 看穿了就是字符串处理,套了层壳而已。
就像易语言,用vc++对一批汉语的“源码”分析了后做出预定的动作即可,本质还是vc++,封装了而已。 --------------------编程问答-------------------- --------------------编程问答-------------------- 又是简单的翻译了一下的东西吧 --------------------编程问答-------------------- 好几天没上来了。
刚刚看了下。
感谢大家的回复。
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>,我可以告诉你,我没有那么幸运可以这么简单的处理用户输入的代码。如果那样的话,写个自己的脚本语言,那真的跟切个白菜一个样简单了。当然了,未来,语言引擎自动生成的工具出现的话,另当别论,我始终坚信这一天会很快到来。

我建议,有兴趣的人,学习学习编译原理,自己写个语言看看,我想你可以了解更多。



--------------------编程问答-------------------- 关注高人 都是牛人 --------------------编程问答-------------------- 膜拜动手的人……
鄙视偶自己这种干动嘴的人…… --------------------编程问答--------------------
引用 7 楼 shendun2007 的回复:
又是简单的翻译了一下的东西吧

不管是否简单,做出来才有发言权 --------------------编程问答-------------------- 以前写过一个简单的脚本解释执行的,没涉及到内存分配对象管理地址操作之类的,没楼主的这么高级。

大家有兴趣研究的可以装个ruby,在安装目录下有个src文件夹,里面都是vc++源码。据说ruby的作者松本行弘创造了几百种语言,只有ruby是最出名被广泛推广的。 --------------------编程问答-------------------- 这个完全没有新意和优势的作品,只能说是自己的作业习作,自己默默测试就可以了。等以后做得好了,能有很多真正站住脚的特色,再拿出来也不迟,免得让外人觉得中国真能拿出手的东西少,拿出来的都没多大价值。 --------------------编程问答-------------------- 支持一下 --------------------编程问答-------------------- theforever太牛逼了。拿几个大作,让大家拜读拜读。 --------------------编程问答-------------------- 特讨厌一种人,感觉越是把别人说的一文不值。自己就越牛B似的。
牛逼的人,这么成长起来,似乎太容易了。
我没想弄的多有特色,走VB.NET语法,是想让更多的人接受这个脚本的语法。
就跟大多的脚本语言,要么是Basic系的,要么是C系的,很少有自己搞个让人陌生的语法的。 --------------------编程问答-------------------- 支持,有的人就喜欢说三道四,不损别人日子就过不下去了

希望快点出现哈,不过VB写的Basic系的还是比较少的 --------------------编程问答-------------------- 再过来支持一下! --------------------编程问答-------------------- 谢谢老马的支持哈。

To llp5431
VB写的Basic系的还是比较多的。
我看过的开源的比较不错的是SmallBasic
纯VB实现
http://sourceforge.net/projects/sbi/
这个地址可以下载源码,获得相关信息。 --------------------编程问答-------------------- --------------------编程问答-------------------- 感觉是个很有用的材料啊,学习了。
补充:VB ,  非技术类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,