- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《编译原理》
实验指导书
执笔人:陈义仁
2008年3月
实验一 词法分析器的设计
一、实验目的和要求
加深对状态转换图的实现及词法分析器的理解。熟悉词法分析器的主要算法及实现过程。要求学生掌握词法分析器的设计过程,并实现词法分析。
二、实验基本内容
给出一个简单语言的词法规则,画出状态转换图,并依据状态转换图编制出词法分析程序,能从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示)
词法规则如下:
单词符号 种别码 内码 单词符号 种别码 内码 break 101 >= 209 char 102 < 210 do 103 <= 211 double 104 == 212 else 105 != 213 float 106 214 for 107 || 215 if 108 ! 216 int 109 << 217 return 110 >> 218 void 111 | 219 while 112 220 + 201 = 221 - 202 += 222 * 203 -= 223 / 204 *= 224 % 205 /= 225 ++ 206 %= 226 -- 207 >>= 227 > 208 <<= 228 单词符号 种别码 内码 单词符号 种别码 内码 = 229 } 306 |= 230 # 307 [ 301 ; 308 ] 302 , 309 ( 303 标识符 400 ) 304 常数 500 二进制形式 { 305
三、实验时间:上机三次。第一次按照自己的思路设计一个程序。第二、三次在理论课学习后修改程序,使得程序结构更加合理。
四、实验过程和指导:
(一)准备:1.阅读课本有关章节(c/c++,数据结构),花一周时间明确语言的语法,写出基本算法以及采用的数据结构和要测试的程序例。2.初步编制好程序。3.准备好多组测试数据。
(二)上课上机:将源代码拷贝到机上调试,发现错误,再修改完善。
(三)程序要求:
程序输入/输出示例:
输入如下一段:
main()
{
/*
一个简单的c++程序
*/
int a,b; //定义变量
a = 10;
b = a + 20;
}
要求输出如右图。
要求:
剔除注解符
常数为无符号整数(可增加实型数,字符型数等)
(四)练习该实验的目的和思路:
程序开始变得复杂起来,可能是大家以前编过的程序中最复杂的,但相对于以后的程序来说还是简单的。因此要认真把握这个过渡期的练习。程序规模大概为200行及以上。通过练习,掌握对字符进行灵活处理的方法。
(五)为了能设计好程序,注意以下事情:
1.模块设计:将程序分成合理的多个模块(函数/类),每个模块(类)做具体的同一事情。
2.写出(画出)设计方案:模块关系简图、流程图、全局变量、函数接口等。
3.编程时注意编程风格:空行的使用、注释的使用、缩进的使用等。
4.程序设计语言不限,建议使用面向对象技术及可视化编程语言,如C++,VC,JAVA,VJ++等。
四、上交:
1.程序源代码及可执行文件(当堂检查/通过网络提交);
2.已经测试通过的测试数据3组(全部存在一个文本文件中,以“第一组输入/输出/第二组输入/输出/第三组输入/输出”的顺序存放);
3.实验报告按照提供的模板填写:
功能描述:该程序具有什么功能?
算法描述:所采用的数据结构,基本实现算法及某些特殊过程的实现算法(如在处理某个问题时,你所采取的好的处理方法等)注意此处不要简单的将源程序抄上来。(源程序将打印出来作为附录)
(3) 程序结构描述:函数调用格式、参数含义、返回值描述、函数功能;另外可以附加函数之间的调用关系图、程序总体执行流程图及类的层次图。
实验总结:你在编程过程中花时多少?多少时间在纸上设计?多少时间上机输入和调试?多少时间在思考问题?遇到了哪些难题?你是怎么克服的?你对你的程序的评价?你的收获有哪些?
写出上机调试时发现的问题,以及解决的过程;
(6) 附上源程序(打印的)
五、问题描述及基本算法提示
状态转换图的实现
让每个结点对应一小段程序。 需引进一组全局变量和过程
(1)ch 字符变量,存放最新读进的源程序字符。
(2)strToken 字符数组,存放构成单词符号的字符串。
(3)GetChar
您可能关注的文档
最近下载
- 化疗相关性呕吐(CINV)风险评估表(与【CINV护理记录表】一起使用).docx VIP
- 第四单元第3课时 《青少年管弦乐队指南》 课件 湘艺版音乐七年级下册.pptx VIP
- 职业病危害控制效果评价报告书.docx VIP
- 《未成年人防性侵教育课件》.ppt VIP
- 麦肯锡工作法.pdf VIP
- ps《泪指轮传说—尤特娜英雄战记》游戏攻略.doc VIP
- 教科版三年级上册科学第一单元《水》全单元教学课件(新版).pptx
- GB 50300-2013建筑工程施工质量验收统一标准.pdf VIP
- 25页PPT-无人机光伏电站巡检解决方案.pptx VIP
- 2025年人教三年级数学上册期末冲刺模拟试题答案及解析.docx VIP
原创力文档


文档评论(0)