网站大量收购独家精品文档,联系QQ:2885784924

《編译原理》实验指导书.doc

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《編译原理》实验指导书

编译方法 实验指导书 柴本成 赵晨 编写 浙江万里学院 2010.01 目 录 实验一 有限自动机的构造与实现 1 实验二 词法分析器的设计 3 实验三 语法分析-递归下降分析器 5 实验四 LL(1)文法预测分析表的实现 6 附 录 9 附录一 实验结果的提交与检查 9 附录二 实验报告参考格式 9 附录三 Visual C++上机环境简介 10 附录四 参考程序 13 实验一 有限自动机的构造与实现 实验目的 正确理解正规式和正规集以及有限自动机的定义; 熟练掌握用状态转换图表示有限自动机的方法。 实验预习提示 正规表达式就是一种形式化的表示法,它可以表示单词符号的结构,从而精确地定义单词符号集。正规表达式简称为正规式,它表示的集合即为正规集。 状态转换图是一张当输入不同内容时选择不同分析路径的有向图。一个状态转换图可用于识别一定的字符串。 有限自动机(FA)是更一般化的状态转换图,可用来识别正规集;分为DFA和NFA两种。 实验内容 构造识别如下字符串的状态转换图,并将其编程实现。 识别标识符(以字母开始由字母和数字构成的字符串,要求长度不超过10); 参考程序: #include iostream.h #include string.h //字符串处理的头文件 //判断一个字符是不是字母 bool Isletter(char ch) { if(ch=a ch=z || ch=A ch=Z) return true; return false; } //判断一个字符是不是数字 bool IsDigit(char ch) { if(ch=0 ch=9) return true; return false; } //判断一个字符串是不是标识符 bool IsId(char *str) { if(!Isletter(str[0]) ) return false; int l=strlen(str); //计算字符串的长度 for(int i=1;il;i++) if(Isletter(str[i]) || IsDigit(str[i])) continue; //如果是字母或数字就继续循环 else return false; //否则,返回不是字符串 return true; } void main() { char *str=1abc; //初始化字符串,也可键盘输入 if(IsId(str)) coutaccept!endl; else cout not accept!endl; } 识别实数(要求正负号可有可无,长度不超过20,不要求识别用科学记数法表示的实数)。 (选做)识别实数(包含科学计数法)。 实验要求 编程语言可用C/C++中任意一种; 自行设计测试数据对程序进行测试,对输入的字符串(以’#’作为结束符)如果能识别,则显示“接受”,否则,显示“不接受”; 写出从文件读入源代码,输出测试结果至文件保存。 书写实验报告;实验报告的格式可参见附录《实验报告参考格式》。 实验二 词法分析器的设计 实验目的 通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。 编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示) 二、实验预习提示 词法分析器的功能和输出格式 词法分析器的功能是输入源程序,输出单词符号。词法分析器的单词符号常常表示成以下的二元式(单词种别码,单词符号的属性值)。本实验中,采用的是一类符号一种别码的方式。 单词的BNF表示 标识符- 字母字母数字串 字母数字串-字母字母数字串|数字字母数字串| 下划线字母数字串|ε 无符号整数- 数字数字串 数字串- 数字数字串 |ε 加法运算符- + 减法运算符- - 大于关系运算符- 大于等于关系运算符- = “超前搜索”方法 词法分析时,常常会用到超前搜索方法。如当前待分析字符串为“a+”,当前字符为’’,此时,分析器到底是将其分析为大于关系运算符还是大于等于关系运算符呢?显然,只有知道下一个字符是什么才能下结论。于是分析器读入下一个字符’+’,这时可知应将’’解释为大于运算符。但此时,超前读了一个字符’+’,所以要回退一个字符,词法分析器才能正常运行。在分析标识符,无符号整数等时也有类似情况。 三、实验过程和指导 (一)准备: 阅读课本有关章节

文档评论(0)

df9v4fzI + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档