心念旧安,夙夜忧叹。

用VC写一个TCL的解释器(图)

上一篇 / 下一篇  2007-05-29 23:53:26 / 个人分类:原创文章

;E8uwC H/Q^0今天上完了19期的集成测试自动化TCL(Tool Command Language)课,给他们介绍了TCL的扩展机制以及用VC搭建一个TCL集成测试环境。后来有同学问我是否可以用VC写一个Tclsh那样的解释器,我想了想,难的都教了(扩展指令都会了),简单的还不会么,于是打开VC,歘歘歘……

|O;P,Y C,Ma:C0

(lT)_1u7_@(x0v0自从给大家讲了Console版的tcl集成环境搭建指南后,我发现开始喜欢写“傻瓜式教程”了——呵呵,希望能够给更多的初学者带来有效的帮助。

\m_X I!v0

7y P@0IcQE0以下就直奔主题,带大家用VC写一个最简单的Tcl解释器。51Testing软件测试网0A5A4fvz J

51Testing软件测试网*OQ3t[6Fj C6F

首先,打开VC(注:本人用的是VC 6.0英文版),点菜单File-->New,出现如下这张图,选择Projects-->Win32 Console Application,在Project Name那里填入MyTcl,然后点OK按钮。51Testing软件测试网A(Yt6\KpQ8|

!m(wU'o0`t0在接下来的向导窗口中选择“A Simple Application”,点Finish按钮。51Testing软件测试网skhl-Ok9R

51Testing软件测试网.A|4N~;P;g

再接下来弹出一个New Project Information,点OK按钮。51Testing软件测试网u5n _&v\$k

\5gi2rz&s!v0接着,双击VC项目工程的FileView(文件视图)里的MyTcl.cpp文件,输入代码如下:51Testing软件测试网 zhg(S.P9N5j;SP)U
[CODE]51Testing软件测试网 J3_ Yg(s ~ A U

;W ^,HD M0|R)i+g0// MyTcl.cpp : Defines the entry point for the console application.51Testing软件测试网H;Q/PJc`
// code by 51Testing.songfun

/bC P0fB\-e@1p8r051Testing软件测试网-`.GH(z sC'a

#include "stdafx.h"51Testing软件测试网 qR6~.pk%J I}
#include <tcl.h>

n7c3t6[ Z|5MY1t)n0

/y#\tqJo"V([0int Tcl_AppInit(Tcl_Interp *interp)
*`[.dhh\*?051Testing软件测试网5Gr8Au_)\ x
 if (Tcl_Init(interp) == TCL_ERROR)
fAJ(a~ fPG0 {
+N X7m:a*VU(Y0  return TCL_ERROR;
V4X8@@4n T,?/k'~]'?0 }
o e il CbL+W0 return TCL_OK;51Testing软件测试网]6b?We YkR'y
}

"@le-V f;D#t051Testing软件测试网,~l:T E%@i N!x

int main(int argc, char *argv[])51Testing软件测试网c,Y&uP9p/wo
{
!AB;bt V2g N8xf7y$v0 Tcl_Main(argc, argv, Tcl_AppInit);
.d~8Jr'y0 return 0;
:L{!?S9g CxN0}

-A6x8dTR B051Testing软件测试网q,IU1L `HtR

[/CODE]

!} Jv3A2O051Testing软件测试网N({{ |6Y2u'T

然后,点VC的菜单Project-->Add to Project-->Files,把tcl.h和tcl83.lib分别加进来。如图。
Kd0^)j&MG(z K C0再在VC的菜单Tools-->Options的Directories里设置tcl83包的头文件路径和库文件路径。如图。51Testing软件测试网gnd'e,f;~g/u

@4X%w2B*C8yr4B;j0最后,点VC的“感叹号”Execute(执行按钮),看到什么了?
%GGn:e:w1N1PR0k%Yo~0呵呵,是不是这个窗口和大家之前看到的那个tclsh应用程序很像啊?51Testing软件测试网VCL_[9f EG(W
它就是我们自己写的tcl解释器,怎么样,很有成就感吧,嘻嘻,其实代码也没有多复杂对吧。51Testing软件测试网9hQ Q!L S#p$b$m _1`

w1t9O4A7]$F%]@Kj0实际上,这个地方只是演示一个例子,我们放着tclsh和scrīpt.Net这样的tcl解释工具不用,却自己用VC写一个tcl解释器的目的是什么?正是为了使用它的扩展机制来扩展我们自己定义的命令。所以上述的例子本身的意义还不是很大,必须结合有效的扩展函数的实现才会显得更有意义(这也是我上课给大家讲的内容)。

-M%pi#b ?9YP f051Testing软件测试网4W*N mZ:^ }3oX

OK,本篇文章到此结束,大家有任何疑问可以随时和我交流,请各位不吝赐教啊,呵呵……51Testing软件测试网B"m!W8L-d^"A!BA


TAG: 原创文章

引用 删除 莎莎爱爱   /   2011-08-04 17:29:43
你好,看到你的这篇日记 我有很多问题想问问你啊 这篇日记是07年写的 所以图片都读不出来了 能不能问你几个问题呢?关于 TCL 嵌入C++的问题~期待你的回复~~
引用 删除 kolecat   /   2007-06-01 11:08:36
留名做记号~有空实践一下
lgh1999747的个人空间 引用 删除 lgh1999747   /   2007-05-31 12:02:55
按照您的方法建立后运行提示出错,如下
function 'int __cdecl main(int,char *[])' already has a body
 

评分:0

我来说两句

日历

« 2024-04-02  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 453350
  • 日志数: 138
  • 图片数: 4
  • 建立时间: 2006-11-26
  • 更新时间: 2013-08-30

RSS订阅

Open Toolbar