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

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

ID:35627171

大小:244.00 KB

页数:23页

时间:2019-04-03

编译原理课程设计--算术表达式的语法分析及语义分析程序设计_第1页
编译原理课程设计--算术表达式的语法分析及语义分析程序设计_第2页
编译原理课程设计--算术表达式的语法分析及语义分析程序设计_第3页
编译原理课程设计--算术表达式的语法分析及语义分析程序设计_第4页
编译原理课程设计--算术表达式的语法分析及语义分析程序设计_第5页
资源描述:

《编译原理课程设计--算术表达式的语法分析及语义分析程序设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、编译原理课程设计课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目:算术表达式的语法分析及语义分析程序设计1.目的通过设计、编制、调试一个算术表达式的语法及语义分析程序,加深对语法及语义分析原理的理解,并实现词法分析程序对单词序列的词法检查和分析。2.设计内容及要求算术表达式的文法:(1)选择算符优先分析法完成以上任务,中间代码选用逆波兰式。(2)写出算术表达式的符合分析方法要求的文法,给出分析方法的思想,完成分析程序设计。(3)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。3.课程设计报告书的内容应包括:(1)设计题目、班级

2、、学号、姓名、完成日期;(2)给出算术表达式的语法分析和语义分析的设计。(3)简要的分析与概要设计;(4)详细的算法描述;(5)源程序清单;(6)给出软件的测试方法和测试结果;(7)设计的评价、收获与体会。时间安排:第18周,周1-周3下午,周5全天指导教师签名:年月日系主任(或责任教师)签名:年月日22编译原理课程设计1课设要求设计题目算术表达式转换成逆波兰式(用算符优先分析法)1.1课程设计的目的课程设计是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,设计题中的问题比平时的练习题要复杂,也更接近实际。编译

3、原理这门课程安排的课程设计的目的是旨在要求学生进一步巩固课堂上所学的理论知识,深化理解和灵活掌握教学内容,选择合适的数据逻辑结构表示问题,然后编制算法和程序完成设计要求,从而进一步培养学生独立思考问题、分析问题、解决实际问题的动手能力。要求学生在上机前应认真做好各种准备工作,熟悉机器的操作系统和语言的集成环境,独立完成算法编制和程序代码的编写。1.2设计内容及要求算术表达式的文法:〈无符号整数〉∷=〈数字〉{〈数字〉}〈标志符〉∷=〈字母〉{〈字母〉|〈数字〉}〈表达式〉∷=[+|-]〈项〉{〈加法运算符〉〈项〉}〈项〉∷=〈因子〉{〈乘法运算符〉〈因

4、子〉}〈因子〉∷=〈标志符〉|〈无符号整数〉|‘(’〈表达式〉‘)’〈加法运算符〉∷=+|-〈乘法运算符〉∷=*|/1.选择算符优先分析法完成以上任务,中间代码选用逆波兰式。2.写出算术表达式的符合分析方法要求的文法,给出分析方法的思想,3.完成分析程序设计。编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。2摘要一个新的语言的22编译原理课程设计出现,必然会有与之配套的编译器的产生。编译器对于一个语言的重要性不言而喻。编译过程分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成这六个阶段。而语法分析和语义分析是最关键的

5、核心部分。要做好一个编译器必须要懂得如何根据构造的文法来识别出它的语法和语义。语法分析的方法很多,而比较容易懂的就有算符优先分析法,本次课设的主题就是要弄懂算符优先分析发。学习制作编译器不仅会让你弄懂这门课,还会让你提高写代码的能力,特别是写出高效,可靠性好的代码。关键字:算术表达式,算符优先文法,逆波兰式3引言逆波兰式又叫做后缀表达式,它的用途很多,譬如做计算器的时候可以对算术表达式采用这种形式来表示,从而可以很容易的来进行计算。在编译原理中,生成中间代码的步骤里,逆波兰式也是中间代码的一种表示形式。算符优先分析法是自底向上进行语法分析的一种方式。自

6、底向上分析的思想就是对输入的符号串自左向右的进行扫描,并将输入符逐个移入一个后进先出栈,边移入边分析,一旦栈顶符号串形成某个句型的句柄或可规约串时,就用该产生式左部的非终结符代替相应右部的文法符号串,这一步叫做规约。重复这一过程直到规约到栈中只剩文法的开始符号时则规约成功,也就确认了这个输入串是文法的句子。算符优先法规定了算符之间的优先关系,通过先于关系识别句柄尾,通过后于关系识别句柄头,以此来进行规约。4正文4.1需求分析要通过算符优先分析方法进行将算术表达式转换成为逆波兰式,首先要经过词法分析,然后是语法分析,通过规约来输出算术表达式的逆波兰式。故

7、先要求出每个非终结符的FIRSTVT()集和LASTVT()集,然后求出终结符的算符优先矩阵,最后以此来规约。因此程序应该能够提供输入一个任意的算符优先文法,并可以对输入的文法进行判断,还可以对文法进行改写,便于后面的分析。自动求出每个非终结符的FIRSTVT()集和LASTVT()集,自动构造终结符的优先矩阵,然后自动规约,输出逆波兰式。4.2理论基础算符优先分析法是自底向上分析法法的一种,它的工作原理是先求出文法中每个非终结符的FIRSTVT()集和LASTVT()集,通过文法中每个产生式的右部非终结符所处的位置来确定每个非终结符之间的优先关系。譬

8、如S->AaB,则a后于A的LASTVT()集规约,也后于A的FIRSTVT()集规约。然后求

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。