电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

《编译原理》实验项目

12页
  • 卖家[上传人]:hs****ma
  • 文档编号:479162054
  • 上传时间:2023-08-03
  • 文档格式:DOC
  • 文档大小:76KB
  • / 12 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、实验一 手工构造简单词法分析程序(必修)一、实验目的了解词法分析程序的基本构造原理,掌握简单词法分析程序的手工构造方法。二、实验内容对从键盘输入或从文件读入的形如:“const count=10,sum=81.5,char1=f,string1=”hj”, max=169;”的常量说明串进行处理,分析常量说明串中各常量名、常量类型及常量值,并统计各种类型常量个数。三、实验要求1、输入的常量说明串,要求最后以分号作结束标志;2、根据输入串或读入的文本文件中第一个单词是否为“const”判断输入串或文本文件是否为常量说明内容;3、识别输入串或打开的文本文件中的常量名。常量名必须是标识符,定义为字母开头,后跟若干个字母,数字或下划线;4、根据各常量名紧跟等号“=”后面的内容判断常量的类型。其中:字符型常量定义为放在单引号内的一个字符;字符串常量定义为放在双引号内所有内容;整型常量定义为带或不带+、- 号,不以0开头的若干数字的组合;实型常量定义为带或不带+、- 号,不以0开头的若干数字加上小数点再后跟若干数字的组合;5、统计并输出串或文件中包含的各种类型的常量个数;6、以二元组(类型,值)的

      2、形式输出各常量的类型和值;7、根据常量说明串置于高级语言源程序中时可能出现的错误情况,模仿高级语言编译器对不同错误情况做出相应处理。四、运行结果1、输入如下正确的常量说明串:const count=10,sum=81.5,char1=f,max=169,str1=“h*54 2.4S!AAsj”, char2=,str2=“aa!+h”;输出:count(integer,10)sum(float,81.5)char1(char, f)max(integer,169)str1(string,“h*54 2.4S!AAsj”)char2(char, )str2(string,“aa!+h”)int_num=2; char_num=2; string_num=2; float_num=1.2、输入类似如下的保留字const错误的常量说明串:Aconstt count=10,sum=81.5,char1=f;输出类似下面的错误提示信息:It is not a constant declaration statement! Please input a string again!3、输入类似如下

      3、含常量名或常量值错误的常量说明串:const count=10,12sum=81.5,char1=ff,max=0016;输出类似下面的错误提示信息:count(integer,10)12sum(Wrong! It is not a identifier!)char1(Wrong! There are more than one char in .)max(Wrong! The integer cant be started with 0.)int_num=1; char_num=0; string_num=0; float_num=0.4、其他类型的错误处理情况(略)。五、实验提示本实验重点有三个:一是作为常量名的标识符的识别;二是如何根据“=”后出现的内容来判断常量类型;三是对各种错误的处理。难点是对整型和实型常量的判断必须综合考虑多种可能情况。提示:1、 用指针或数组与指针相结合来处理输入的常量说明串;2、 对整型和实型常量处理时,重点考虑常数中0的位置。六、分析与讨论1、若考虑用E或e的科学计数法来表示整数和实数,应该如何实现?2、若考虑布尔型常量,且规定其值只能为true或f

      4、alse,应该如何实现?3、如何对手工构造的词法分析程序做进一步的优化,以提高代码质量和运行效率?七、建议实验学时本次实验建议学时6-8学时。实验二 用FLEX/LEX构造简单词法分析程序(必修)一、实验目的1、熟悉词法分析程序生成器FLEX/LEX的基本使用及其源程序的编写方法;2、掌握FLEX/LEX源程序中模式的构造方法;3、掌握在C源程序中使用FLEX/LEX生成的C语言模块的方法;二、实验内容1、编制一个FLEX源程序,统计任意给出的一个文本文件中字母,数字,回车符的个数;2、用FLEX自动生成简单词法分析程序。三、实验要求1、参考附录A,熟悉FLEX/LEX的基本使用方法;2、用FLEX自动生成简单词法分析程序的实验内容,即完成实验一中对给定常量说明串的词法分析,其具体要求如下:(1)根据输入串或打开的文本文件中第一个单词是否为“const”判断输入串或文本文件是否为常量说明内容;(2)识别输入串或打开的文本文件中作常量名的标识符。标识符定义为字母开头,后跟若干个字母,数字或下划线;(3)识别输入串或打开的文本文件中的等号“=”,并根据其右边的内容判断常量的类型。其中:字符

      5、型常量定义为放在单引号内的一个字符;字符串常量定义为放在双引号内所有内容;整型常量定义为带或不带+、- 号,不以0开头的若干数字的组合;实型常量定义为带或不带+、- 号,不以0开头的若干数字加上小数点再后跟若干数字的组合;布尔型常量定义为true或false;(4)统计并输出串或文件中包含的各种类型常量的个数;(5)以二元组(类型,值)的形式输出各常量的类型和值;(6)根据常量说明串置于高级语言源程序中时可能出现的错误情况,做出错误提示或滤掉错误内容的处理。四、运行结果1、输入如下正确的常量说明串:const count=10,sum=81.5,char1=f,max=169,str1=“h*54 2.4S!AAsj”, char2=,str2=“aa!+h”;输出:count(integer,10)sum(float,81.5)char1(char, f)max(integer,169)str1(string,“h*54 2.4S!AAsj”)char2(char, )str2(string,“aa!+h”)int_num=2; char_num=2; string_num=2; f

      6、loat_num=1.2、输入类似如下的保留字const错误的常量说明串:Aconstt count=10,sum=81.5,char1=f;输出类似下面的错误提示信息:It is not a constant declaration statement! Please input a string again!3、输入类似如下含常量名或常量值错误的常量说明串:const count=10,12sum=81.5,char1=ff,max=0016;则滤掉名字或值错误的常量,输出类似下面的信息:count(integer,10)int_num=1; char_num=0; string_num=0; float_num=0.五、实验提示本实验重点是构造用作常量名的标识符、各种常量类型对应值的模式;难点是如何组合模式,并编写与组合模式匹配的动作代码。提示:1、 通过等于号“=”来连接标识符模式与各种常量类型对应值的模式;2、 通过设置标志或使用条件模式来决定动作代码是否执行。六、分析与讨论1、若考虑布尔型常量,且规定其值只能为true或false,应该如何实现?2、比较使用条件模式和设置标

      7、志变量的效果;3、总结各种常用数据类型的模式构造。七、建议实验学时本次实验建议学时4学时。实验三 手工构造预测语法分析程序(必修)一、实验目的了解预测分析器的基本构成,掌握自顶向下的预测语法分析程序的手工构造方法。二、实验内容已知文法GS:S-ATA-BUT-+AT|$U-*BU|$B-(S)|m其中,$表示空串。对该文法构造预测分析表,并手工构造预测分析程序,对输入串m+m*m#进行语法分析,并根据栈的变化状态输出分析过程。三、实验要求:1、判断上述文法GS是否LL(1)文法,若不是,将其转变为LL(1)文法;2、对转变后的LL(1)文法建立预测分析表;3、根据清华大学出版、吕映之等编著的编译原理教材教材第五章Page 88的图5.11手工构造预测分析程序;4、用预测分析程序对键盘输入串m+m*m#进行语法分析,并根据栈的变化状态输出给定串的具体分析过程。四、运行结果从键盘输入串:m+m*m#;输出:用预测分析法分析符号串m+m*m#的过程StepStackStringRuleStepStackStringRule1#Sm+m*m#S-AT10#TUmm*m#M匹配2#TAm+m*m

      8、#A-BU11#TU*m#U-*BU3#TUBm+m*m#B-m12#TUB*m#*匹配4#TUmm+m*m#M匹配13#TUBm#B-m5#TU+m*m#U-$14#TUmm#M匹配6#T+m*m#T-+AT15#TU#U-$7#TA+m*m#+匹配16#T#T-$8#TAm*m#A-BU17#接受9#TUBm*m#B-m五、实验提示本实验重点有两个:一是如何用适当的数据结构实现预测分析表存储和使用;二是如何实现各规则右部串的逆序入栈处理。建议:使用结构体数组。六、分析与讨论1、若输入串不是指定文法的句子,会出现什么情况?2、总结预测语法分析程序的设计和实现的一般方法。七、建议实验学时本次实验建议学时6-8学时。实验四用BISON/YACC生成逆波兰表示计算器(必修)一、实验目的1、熟悉语法分析程序生成器BISON/YACC的基本使用及其源程序的编写方法;2、掌握BISON/YACC源程序中语法规则部分的具体书写方法;3、掌握BISON/YACC源程序中调用FLEX/LEX生成的词法分析程序的方法;4、掌握在C源程序中使用BISON/YACC生成的C语言模块的方法;二、实验内容用BISON/YACC自动生成逆波兰表达计算器。三、实验要求1、参考附录B,熟悉BISON/YACC的基本使用方法。2、用BISON/YACC自动生成如下逆波兰表达式文法所对应的计算器:exp-exp exp + |exp exp |exp exp * |exp exp / |exp exp |exp n |NUM 其中,为乘幂符号,n为一元减。3、对于输入的逆波兰表达式,要给出结果。四、运行结果从键盘输入:8 5 *输出: 40五、实验提示参见附录C中例子。六、分析与讨论总结使用BISON的构造语法分析程序的一般方法。七、建议实验学时本次实验建议学时4学时。实验五用递归下降法进行表达式分析(选修)一、实验目的掌握用递归下降法进行语法分析的方法。二、实验内容对简单表达式

      《《编译原理》实验项目》由会员hs****ma分享,可在线阅读,更多相关《《编译原理》实验项目》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.