算符优先文法处理算术表达式

算符优先文法处理算术表达式

ID:10076035

大小:22.00 KB

页数:2页

时间:2018-05-24

算符优先文法处理算术表达式_第1页
算符优先文法处理算术表达式_第2页
资源描述:

《算符优先文法处理算术表达式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验三:算符优先文法处理算术表达式一、实验目的:算术表达式的文法可以是(你可以根据需要适当改变):E→E+E

2、E-E

3、E*E

4、E/E

5、(E)

6、i根据算符优先分析法,将表达式进行语法分析,判断一个表达式是否正确。二、实验时间:上机二次。三、实验过程和指导:(一)准备:1.阅读课本有关章节,花一周时间确定算术表达式的文法,设计出算符优先关系表;2.考虑好设计方案;3.设计出模块结构、测试数据,初步编制好程序。(二)上课上机:上机调试,发现错误,分析错误,再修改完善。教师根据学生的设计方案与学生进行探讨,以修改方案和代码。

7、(三)程序要求:程序输入/输出示例:如参考C语言的运算符。输入如下表达式(以分号为结束)和输出结果:(1)10;输出:正确(2)1+2;输出:正确(3)(1+2)/3+4-(5+6/7);输出:正确(4)((1-2)/3+4输出:错误(5)1+2-3+(*4/5)输出:错误注意:1.为降低难度,表达式中不含变量(只含无符号整数);2.如果遇到错误的表达式,应输出错误提示信息(该信息越详细越好);3.测试用的表达式事先放在文本文件中,一行存放一个表达式,同时以分号分割。同时将预期的输出结果写在另一个文本文件中,以便和输

8、出进行对照;4.对学有余力的同学,可增加功能:当判断一个表达式正确时,输出计算结果,计算过程用浮点表示,但要注意不要被0除。程序思路(仅供参考):1.借用实验一的结果,可将其中的取字符函数几乎原封不动地移植过来,其中的分割和分析单词的方法可借用过来分割现在这个实验的运算符、常量和变量。2.模块结构:(1)初始化:设立算符优先关系表(或优先函数)、初始化变量空间(包括堆栈、结构体、数组等);(2)控制部分:将一个表达式从文件中读出;(3)词法分析:将表达式分割成单词序列;(4)利用算符优先文法进行表达式处理:根据算符优

9、先关系表对表达式单词序列进行堆栈操作,如果遇到错误则显示错误信息。(四)练习该实验的目的和思路:程序比较复杂,需要利用到大量的编译原理,也用到了大量编程技巧和数据结构,通过这个练习可极大提高编程能力。程序规模大概为250行。本实验的结果可作为课程设计的基础。通过练习,掌握对表达式进行处理的一种方法。(五)为了能设计好程序,主意以下事情:1.模块设计:将程序分成合理的多个模块(函数),每个模块做具体的同一事情。2.写出(画出)设计方案:模块关系简图、流程图、全局变量、函数接口等。3.编程时注意编程风格:空行的使用、注释

10、的使用、缩进的使用、变量合理命名等。四、上交:1.程序源代码(源代码中以注释的形式说明程序的功能,主文件名为by3);2.已经测试通过的测试数据10组(全部存在test3.txt文件中,以“第一组输入/输出/第二组输入/输出/第三组输入/输出……”的格式存放);3.实验报告按照提供的模板填写:(1)功能描述:该程序具有什么功能?(2)程序结构描述:函数调用格式、参数含义、返回值描述、函数功能;函数之间的调用关系图、程序总体执行流程图(参考课本第二章)。(3)实验过程记录:出错次数、出错严重程度、解决办法摘要。(4)实

11、验总结:你在编程过程中花时多少?多少时间在纸上设计?多少时间上机输入和调试?多少时间在思考问题?遇到了哪些难题?你是怎么克服的?你对你的程序的评价?你的收获有哪些?

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

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

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