编译原理课程设计-算术表达式的语法分析及语义分析程序设计.docVIP

编译原理课程设计-算术表达式的语法分析及语义分析程序设计.doc

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程设计任务书 学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 算术表达式的语法分析及语义分析程序设计 1.目的: 通过设计、编制、调试一个算术表达式的语法及语义分析程序,加深对语法及语义分析原理的理解,并实现词法分析程序对单词序列的词法检查和分析。 2.设计内容及要求 算术表达式的文法: 选择算符优先分析法完成以上任务,中间代码选用逆波兰式。 写出算术表达式的符合分析方法要求的文法,给出分析方法的思想,完成分析程序设计。 编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。 3.课程设计报告书的内容应包括: (1)设计题目、班级、学号、姓名、完成日期; (2)给出算术表达式的语法分析和语义分析的设计。 (3)简要的分析与概要设计; (4)详细的算法描述; (5)源程序清单; (6)给出软件的测试方法和测试结果; (7)设计的评价、收获与体会。 时间安排: 第18周,周1-周3下午,周5全天 指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日 1 课设要求 设计题目 算术表达式转换成逆波兰式(用算符优先分析法) 1.1课程设计的目的 课程设计是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,设计题中的问题比平时的练习题要复杂,也更接近实际。编译原理这门课程安排的课程设计的目的是旨在要求学生进一步巩固课堂上所学的理论知识,深化理解和灵活掌握教学内容,选择合适的数据逻辑结构表示问题,然后编制算法和程序完成设计要求,从而进一步培养学生独立思考问题、分析问题、解决实际问题的动手能力。 要求学生在上机前应认真做好各种准备工作,熟悉机器的操作系统和语言的集成环境,独立完成算法编制和程序代码的编写。 1.2 设计内容及要求 算术表达式的文法: 〈无符号整数〉∷= 〈数字〉{〈数字〉} 〈标志符〉∷= 〈字母〉{〈字母〉|〈数字〉} 〈表达式〉∷= [+|-]〈项〉{〈加法运算符〉〈项〉} 〈项〉∷= 〈因子〉{〈乘法运算符〉〈因子〉} 〈因子〉∷= 〈标志符〉|〈无符号整数〉|‘(’〈表达式〉‘)’ 〈加法运算符〉∷= +|- 〈乘法运算符〉∷= *|/ 1.选择算符优先分析法完成以上任务,中间代码选用逆波兰式。 2.写出算术表达式的符合分析方法要求的文法,给出分析方法的思想,3.完成分析程序设计。 编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。 2 摘要 一个新的语言的出现,必然会有与之配套的编译器的产生。编译器对于一个语言的重要性不言而喻。编译过程分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成这六个阶段。而语法分析和语义分析是最关键的核心部分。要做好一个编译器必须要懂得如何根据构造的文法来识别出它的语法和语义。语法分析的方法很多,而比较容易懂的就有算符优先分析法,本次课设的主题就是要弄懂算符优先分析发。 学习制作编译器不仅会让你弄懂这门课,还会让你提高写代码的能力,特别是写出高效,可靠性好的代码。 关键字:算术表达式,算符优先文法,逆波兰式 3 引言 逆波兰式又叫做后缀表达式,它的用途很多,譬如做计算器的时候可以对算术表达式采用这种形式来表示,从而可以很容易的来进行计算。在编译原理中,生成中间代码的步骤里,逆波兰式也是中间代码的一种表示形式。 算符优先分析法是自底向上进行语法分析的一种方式。自底向上分析的思想就是对输入的符号串自左向右的进行扫描,并将输入符逐个移入一个后进先出栈,边移入边分析,一旦栈顶符号串形成某个句型的句柄或可规约串时,就用该产生式左部的非终结符代替相应右部的文法符号串,这一步叫做规约。重复这一过程直到规约到栈中只剩文法的开始符号时则规约成功,也就确认了这个输入串是文法的句子。算符优先法规定了算符之间的优先关系,通过先于关系识别句柄尾,通过后于关系识别句柄头,以此来进行规约。 4 正文 4.1 需求分析 要通过算符优先分析方法进行将算术表达式转换成为逆波兰式,首先要经过词法分析,然后是语法分析,通过规约来输出算术表达式的逆波兰式。故先要求出每个非终结符的FIRSTVT()集和LASTVT()集,然后求出终结符的算符优先矩阵,最后以此来规约。因此程序应该能够提供输入一个任意的算符优先文法,并可以对输入的文法进行判断,还可以对文法进行改写,便于后面的分析。自动求出每个非终结符的FIRSTVT()集和LASTVT()集,自动构造终结符的优先矩阵,然后自动规约,输出逆波兰式。 4

文档评论(0)

***** + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档