第一范文网 - 专业文章范例文档资料分享平台

词法分析报告附代码dev c++

来源:用户分享 时间:2025/6/14 4:08:23 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

中北大学软件学院

实专 业 课程名称 学 号 姓 名

验 报 告

辅导教师 成绩

实验日期 实验时间 1实验名称 :词法分析器的设计与实现 2、实验目的 (1)掌握C语言单词符号的划分、正规式、状态转换图及词法分析器的实现。 (2)掌握词法分析程序的作用。 3、实验要求 (1)对任给的一个C语言源程序,能够滤掉空格、回车换行符、tab键及注释。 (2)识别各类单词符号,如关键字、标识符、运算符、常数、界符,结果以二元式形式输出,并构造符号表。 (3)输出有词法错误的单词及所在行号。(在此阶段只能识别有限的词法错误) 4、实验原理 根据扫描到的单词符号的第一个字符的种类,分别转到相应的程序进行处理。这些程序的功能就是识别以相应字符开头的各类单词符号。 5、实验步骤 (1)根据C语言各类单词的正规式,构造能识别各类单词的状态转换图。 (2)根据状态转换图,构造识别各类单词的词法分析器。 6、状态转换图及词法分析程序

(1)标识符(ID)和整型常数(NUM)的正规式如下:

ID = _ | letter (letter | digit)* NUM = digit digit*

其中标识符的状态转换图为:

其词法分析程序为:

if(((ch>='A')&&(ch<='Z'))||((ch>='a')&&(ch<='z'))||(ch=='_'))

{ /*以字母开头*/

while(((ch>='A')&&(ch<='Z'))||((ch>='a')&&(ch<='z'))||(ch=='_')||((ch>='0')&&(ch<='9')))

{

array[i++]=ch; ch=fgetc(fpin); }

word=(char *)malloc((i+1)*sizeof(char)); memcpy(word,array,i); word[i]='\\0'; is_id_key(word); if(ch!=EOF)

fseek(fpin,-1L,SEEK_CUR); }

常数的状态转换图为:

其词法分析程序为:

else if(ch>='0'&&ch<='9')

{ /*以数字开头*/ while(ch>='0'&&ch<='9') {

array[i++]=ch; ch=fgetc(fpin); }

word=(char *)malloc((i+1)*sizeof(char)); is_number(word,array,i);

word[i]='\\0'; cs_manage(word); if(ch!=EOF)

fseek(fpin,-1L,SEEK_CUR); } (2)

搜索更多关于: 词法分析报告附代码dev c++ 的文档
词法分析报告附代码dev c++.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9z4f43beo20a6ri16ztk_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top