通过状态转换图构造c或者pascal语言子集的词法分析程序.,词法分析程序的构造.doc...

通达学院

专业课程设计II

题 目: 词法分析程序的构造

专 业 计 算 机 通 信

学 生 姓 名

班 级 学 号 28班

指 导 教 师 徐 佳

指 导 单 位 计算机学院计算机科学与技术系

日 期 2012.11.12-2012.11.23

教师评语

同学出勤率(满勤、较高、一般,较低),学习态度(端正、较端正、一般、较差),程序设计基础(好、较好、一般、较差),演示程序(已经、没有)达到了基本要求,算法设计(好、较好、一般),界面友好程度(好、较好、一般),答辩过程中回答问题(准确、较准确、错误率较高),撰写报告格式(规范、一般)、内容(丰满、简单)、表述(清晰、一般、不清楚),(圆满、较好、基本)完成了课题任务。

教师签名:

年 月 日成绩评定备 注

词法分析程序的构造

课题内容和要求

通过状态转换图构造C或者PASCAL语言子集的词法分析程序。

原理解析:选取语言,例如选取了C语言,选取其中一个子集,例如包含了部分关键字main、float、if、for等等,特殊符号( 、

基本要求:(1)将选取的语言子集编写一个简单程序,放在一个文本文件中;

(2)要将一个个单词区分清楚并归类(例如for属于关键字)。

char cbuffer;

char*keyword[14]={"if","else","for","while","do","float","return","break","continue","int","void","main","const","printf"}; //关键字

char *border[8]={ "," , ";" , "{" , "}" , "(" , ")" ,":=","."}; //分隔符

char *arithmetic[6]={"+" , "-" , "*" , "/" , "++" , "--"}; //运算符

char *relation[7]={"" , ">=" , "==" ,"!="}; //关系运算符

char *lableconst[80]; //标识符

2)函数调用:

search(char searchchar[],int wordtype)//查找类型

alphaprocess(char buffer) //字符处理过程

digitprocess(char buffer) //数字处理过程

otherprocess(char buffer) //分隔符、运算符、逻辑运算符等

main()//主函数

3状态转换图的形式:

■每个状态对应一个带标号的case语句

■转向边对应goto语句switch (wordtype)

{

case 1:

{ for (i=0;i<=13;i++) //关键字

{

if (strcmp(keyword[i],searchchar)==0)

return(i+1);

}

return(0);}

case 2:

{

for (i=0;i<=7;i++) //分隔符

{

if (strcmp(border[i],searchchar)==0)

return(i+1);

}

return(0);

}

case 3:

{

for (i=0;i<=5;i++) //运算符

{

if (strcmp(arithmetic[i],searchc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值