Linkman的学习记录

学习记录,兴趣方面:实时数据库、MES、SIS、工控软件、C++编程、人机界面、嵌入式软件、可视化等

VC知识库BLOG 首页 新随笔 联系 聚合 登录
  88 Posts :: 16 Stories :: 372 Comments :: 0 Trackbacks

留言簿(17)

随笔分类

随笔档案

文章分类

文章档案

传说中的名人

我的链接

朋友

搜索

最新评论

阅读排行榜

评论排行榜

WxBasic源码分析(1)前言

 

WxBasic是一个支持wxWidgets(即之前的wxWindows)的解释型BASIC语言,LinuxWindows双平台,可以发布包裹好的可执行文件。可以到http://wxbasic.sourceforge.net/下载其源代码和文档。

WxBasic具有与QB非常类似的语法规则,在某些Basic语法方面进行了增强,如:

l         变量类型可以为ListTableRoutine等;

l         函数可以返回多个值;

l         提供For Each等简便的循环语句;

l         ……

为了增加对WxWidgets提供支持,它对Basic语法进行了扩展,如:

l         提供类对象的支持;

l         提供属性、方的支持;

l         ……

在计算机技术高速发展的今天,设计一门新的编译型或解释型编程语言已不再是一件非常困难的事情,任何计算机专业的学生学习一两个月的编译原理课程后,都可以设计出一个简单的语言解释器。而事实上,目前在实际中使用的新的编程语言层出不穷,优秀的开源脚本语言也比比皆是,如:TCLPythonLubyLua等。许多游戏也都提供了基于脚本语言的扩展方法,如Quark提供的Quark C等等。在这么多语言可以选择和分析的今天,我为何要选择WxBasic作为源码分析的对象呢?原因如下:

l         Basic语言在中国有一大批用户,特别是非计算机专业的用户,这类用户在大学期间都学习过Basic语言;

l         我正在组织设计的工控开源组态软件需要一门跨平台的、语法简单的、易于扩展的脚本语言,而这个开源组态软件面对的最终用户是非计算机专业的工控人员,Basic是这个脚本语言的首选;

l         WxBasic基于WxWidgets,但它对WxWidgets的封装部分与语言本身的隔离性非常强,这正是我所需要的,我只需要WxBasic的非界面部分的功能,但我也想实现WxBasic对其它系统的封装方法,这是一个非常好的例子;

l         WxBasic的编码结构清晰,容易学习;

l         最后一点,WxBasic的功能集与我所需要的功能集非常接近。

我编写WxBasic的分析文档是给我的组员们学习用的(他们都放假回家了),在此处发表的原因有:

l         希望能交到更多的对开源工控组态软件开发有兴趣的朋友(特别是湖南长沙的朋友);

l         希望能得到大家的帮助,对我的分析文档提出意见。

本系列文档的提纲为:

1. 前言

2. 目录和文件结构

3. 文件功能分组

4. 调试技术

5. 内存管理

6. variant类型实现

7. 错误处理

8. 辅助函数

9. 程序堆栈

10. symbol实现

11. pcode分析

12. 词法分析

13. 语法分析

14. 解释执行机制

15. 内建函数

16. 扩展函数的方法

17. 封装wxWindow

18. 封装其它系统

19. 在其它系统中封装wxbasic

20. 优缺点分析

21. 功能扩展

当然,在编写文档的过程中,可能会因为理解方面的提高,会改变这个提纲。

最后,说明一下本文档的适用对象:

l         对脚本语言的设计有兴趣的朋友;

l         对编译原理有兴趣的朋友;

l         希望找到一个功能完整、跨平台、可以嵌入在自己系统的脚本语言的朋友;

好了,闲话少说,开始工作,希望大家多提意见,也希望此系列文档对大家能有所帮助。

posted on 2005-01-30 07:32 linkman的学习记录 阅读(3147) 评论(5)  编辑 收藏

Feedback

# re: WxBasic源码分析(1)前言 2005-01-30 08:21 progame
cool 希望能够坚持完成
谢谢分享

# re: WxBasic源码分析(1)前言 2005-01-30 11:22 张旋
顶。一定要坚持完成!

标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]