课程设计:
题目:算符优先文法处理算术表达式
一,实验目的:算术表达式的文法可以是(你可以根据需要适当改变):
E→E+E|E-E|E*E|E/E|(E)|i
根据算符优先分析法,将表达式进行语法分析,判断一个表达式是否正确.
二,实验时间:上机二次.
三,实验过程和指导:
(一)准备:1.阅读课本有关章节,花一周时间确定算术表达式的文法,设计出算符优先关系表;2.考虑好设计方案;3.设计出模块结构,测试数据,初步编制好程序.
(二)上课上机:上机调试,发现错误,分析错误,再修改完善.教师根据学生的设计方案与学生进行探讨,以修改方案和代码.
(三)程序要求:
程序输入/输出示例:
如参考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.测试用的表达式事先放在文本文件中,一行存放一个表达式,同时以分号分割.同时将预期的输出结果写在另一个文本文件中,以便和输出进行对照;
4.对学有余力的同学,可增加功能:当判断一个表达式正确时,输出计算结果,计算过程用浮点表示,但要注意不要被0除.