心念旧安,夙夜忧叹。

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

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

51Testing软件测试网Sj ] kp-W

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

a'g^ {S%e|6e.J0

0}gs `;pMO D0N-b ZM0自从给大家讲了Console版的tcl集成环境搭建指南后,我发现开始喜欢写“傻瓜式教程”了——呵呵,希望能够给更多的初学者带来有效的帮助。51Testing软件测试网!kxL+pH!DE:En

4[T'i~9I0以下就直奔主题,带大家用VC写一个最简单的Tcl解释器。

NN5{&?c Pj051Testing软件测试网Y;P]$dlG

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

X/J3kC~t4Vo0在接下来的向导窗口中选择“A Simple Application”,点Finish按钮。51Testing软件测试网2r#i.V6F/J

dM-`B2e1y3J#U0再接下来弹出一个New Project Information,点OK按钮。51Testing软件测试网m CfyF4kC7^j\ F

51Testing软件测试网2yY3m{ N!P

接着,双击VC项目工程的FileView(文件视图)里的MyTcl.cpp文件,输入代码如下:51Testing软件测试网^2]9NtPE
[CODE]51Testing软件测试网bDS"W&O0abtV8K#t

Xd@@w&a$qAA&w0// MyTcl.cpp : Defines the entry point for the console application.
z1i {~i ?0// code by 51Testing.songfun51Testing软件测试网 ]'a@2Lay,]7YT

51Testing软件测试网(?GU/M"qp[3Rx

#include "stdafx.h"
9d^[ Pq2R-E6Z*u0#include <tcl.h>

$x&y^n2{8m0V*\0

/@ @@GW0int Tcl_AppInit(Tcl_Interp *interp)
%WspbxxR$OmE051Testing软件测试网3A.O1H1Cg3y4u6IG
 if (Tcl_Init(interp) == TCL_ERROR)51Testing软件测试网%DH/Vx1r[n
 {
2JGv0N!}Bf8fw0  return TCL_ERROR;
Oj!vT,d$m0 }51Testing软件测试网d BMt'AX
 return TCL_OK;51Testing软件测试网;e0a(S0])G kN7fB
}

w t.L4[zw3}051Testing软件测试网/{1Tcn F'l$_+~

int main(int argc, char *argv[])
Qh'i5z6tr0{51Testing软件测试网z3Q!KR&Q0[
 Tcl_Main(argc, argv, Tcl_AppInit);
Teq TXcc0 return 0;51Testing软件测试网 ]F:Y@;A4W n n;fbK
}

6JLcu*`*m1A(K051Testing软件测试网;[*]}o0T]L!P

[/CODE]

6QG'vZMa0

RhmwB sa&f R'O0然后,点VC的菜单Project-->Add to Project-->Files,把tcl.h和tcl83.lib分别加进来。如图。51Testing软件测试网ws4jm6{'n.lJ
再在VC的菜单Tools-->Options的Directories里设置tcl83包的头文件路径和库文件路径。如图。

Pr$f~0i051Testing软件测试网u9X@0t-_I`

最后,点VC的“感叹号”Execute(执行按钮),看到什么了?51Testing软件测试网?)K.b?iu M
呵呵,是不是这个窗口和大家之前看到的那个tclsh应用程序很像啊?51Testing软件测试网O-Bx.vn1C9o y$?
它就是我们自己写的tcl解释器,怎么样,很有成就感吧,嘻嘻,其实代码也没有多复杂对吧。51Testing软件测试网q@ r/w g(R

51Testing软件测试网(cR[L-|bH

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

2t:Ag Sm NX0OK,本篇文章到此结束,大家有任何疑问可以随时和我交流,请各位不吝赐教啊,呵呵……

U(uT,W5GwQvgX g0

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-28  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

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

RSS订阅

Open Toolbar