C语言可视化编程环境的设计与实现
第32卷第4期武汉理工大学?信息与管理工程版201O年8月JOURNALOFWUT(INFORMATION&MANAGEMENTENGINEERING)V ol_ 32No.4
Aug.2010
文章编号:1007—144X(2010)04—0561—04文献标志码:A
C语言可视化编程环境的设计与实现
陈雪梅,韩洁琼
(1.广州工程技术职业学院信息工程系,广东广州510075;2.仲恺农业工程学院计算机学院,广东广州510025)
摘要:程序设计中采用可视化技术使人机界面的实现可以通过"所见即所得"的可视化操作方式进行定制,
可极大地提高程序设计人员的工作效率.通过运用VisualC++开发工具结合Flash 的交互实现C语言可视
化的程序编辑,同时用Flash动画的交互方式展示了可视化语法和词法分析功能的全过程.
关键词:可视化编程环境;人机界面;词法分析;语法分析
中图分类号:TP314
1可视化环境的研究意义
可视化环境¨给程序员的人机界面的开发
带来了巨大的变化,使人机界面的实现可以通过
可视化操作,以"所见即所得"的方式进行定制;
可视化运行主要是程序在运行过程中的数据结构
可视显示,将抽象的词法与语法结构转换成二维
动画及图形的方式展示出来,且采用Flash动画
形式生成一棵棵的词法树及语法树,使初学者从
枯燥乏味的单一编程环境中解脱出来,提高对学
习的兴趣.
可视化调试环境对于程序设计者,开发人员
和维护人员来说意义重大.详细,形象和直观的
程序结构_3将大大提高程序的开发效率,测试效
率及后期的维护效率,同时图形化的程序结构也
能减少开发人员之间的沟通开销.笔者采用C
语言,描述了在程序可视化编程中的词法及语法
分析过程,以及可视动画机制的设计及实现过程.
2可视化编程环境设计
2.1可视化编程环境设计总体框架
C语言在TC环境下的运行没有过程的提示,
只有结果的出现,也就是说没有可视化的运行过
程.C语言虚拟编译器是一个分阶段执行系统,
其每一个阶段将c语言源程序从一种表示转换成
另一种表示,其中词法分析,语法分析和语义分析
DOI:10.3963/j.issn.1007~144X.2010.04.012
分别称为分析部分,代码编译和代码执行部分.
设计C语言程序可视运行全过程步骤的整
体框架如图1所示.以实现程序代码与设计者的
人机交互,能直观地观察程序可视运行的过程.
可视化编程环境的实现过程主要由词法分析,语
法分析,语义分析等过程体现,采用VisualC++
面向对象的编程工具来实现C语言的可视化编
程环境一.
Tokerr,~——词法分析————)(图形,动画j——_-]广—-L]rJ词法分析树语法分析
语法树——七I建立符号表
一错误处理及展示图1整体框架
2.2可视化词法分析器的实现过程
2.2.1分析过程
可视化第一阶段通过词法分析器对源代码进
行一次扫描和分解,将源程序解析为单词序列,其
收稿日期:2010—01—13.
作者简介:陈雪梅(1978一),女,广东梅州人,广州工程技术职业学院信息工程系讲师
基金项目:广州市教育局重点教学研究基金资助项目(2009—2).
562武汉理工大学?信息与管理工程版2010年8月
功能和角与编译器中的词法分析器无任何差别.
词法分析器主要是从C语言源程序中读取
信息到双输入缓冲器中,然后对其进行转换,生成
能被语法分析器分析的记号流,词法分析过程如
图2所示.具体过程描述如下:
从C语言源程序文件中读取源代码信息到
双输入缓冲器中,等待词法分析器进行处理;
词法预处理器依次从双输入缓冲器中读取单
个字符进行分析处理,将其分解成原始的与C语
言规则无关的Token信息,在进行预处理时,会剔
除注释及空白符(空格,制表符或其他不可见字
符等).具体类型如下:
行结尾:主要是判断源代码是否已结束;
文件结尾:主要用于记录各Token的行号,为
程序执行及错误定位等服务;
整型:如123的整型数据;
浮点型:如123.4的浮点型数据;
单词:连续在一起的a~z,A~z,—等信息组合;
字符串:以双引号开头的信息;
字符:以单引号开头的信息;
其他:除以上的相关信息,如标点和特殊字符.
返回上个Token●-_'__.',.●●__●._.-●●●'--___●图2词法分析过程
2.2.2数据结构的设计
词法扫描器会根据C语言的具体规则(如关
键字,运算符,数据类型和程序语句结构等)从词
法预处理器产生的原始Token中依次读取原始Token信息进行分析,产生最终给语法分析器使
用的记号流信息,并为每一个Token定义相应的
类型信息.Token的数据结构设置如下: structTOKEN
{
enumTokenTypetype;//TOKEN数据类型
//关键字
/
/操作符("=","+","一",":l:",…/.,"%",
"&","ItI,"~","!","<",">")
//内部标点和特殊字符("(",")",tt{It,"}I.,
"[1I,",",",".",";",":","#")
//组合数据类型
//复合操作符(==,!=,++,一一,+=,
=
,:l:=,/=,<=,>=,&&,l1)
//预处理指令
CStringstr;//TOKEN名称
};java开发可视化界面
2.2.3词法分析产生的结果
根据系统设计的原理,词法分析产生的结果
用一个实例来说明.
个简单C语言程序如下: voidmain()
{
inti;
i=2:
if(i!=0){
printf("d%",i);
}
}
产生的Token情况如下:
行号:1Token代码:void值:void 行号:1Token代码:ID值:main 行号:lToken代码:(值:(
行号:1Token代码:)值:)
行号:2Token代码:{值:{
行号:3Token代码:int值:int
行号:3Token代码:ID值:i
行号:3Token代码:;值:;
行号:4Token代码:ID值:i
行号:4Token代码:=值:=
行号:4Token代码:NUM值:2 行号:4Token代码:;值:;
行号:5Token代码:if值:if
行号:5Token代码:(值:(
行号:5Token代码:ID值:i
行号:5Token代码:!=值:!:
行号:5Token代码:NUM值:0 行号:5Token代码:)值:)
行号:5Token代码:{值:{

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。