《编译原理》实验说明书2009.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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

文档评论(0)

精品报告 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档