三、设计要求
1、使用模块化设计思想来设计该编译器;
2、词法分析模块用于读入输入串,并将其转换成供语法分析模块使用的记号流。其中包括滤掉空格和注释、识别常数、识别标识符和关键字等功能;
3、要求在语法分析模块中利用语法制导翻译技术完成具体的中缀表达式到后缀表达式的翻译,其中包括按前述翻译器的规格说明构建对应表达式、项、因子的非终结符expr、term和factor的函数以及检查记号是否匹配的函数;并在不匹配时调用错误处理模块;
4、要求符号表管理模块主要完成符号表对应数据结构的具体实现功能;
5、错误处理模块负责报告错误信息及位置,并终止分析过程;
6、输出模块完成翻译后所得到的后缀表达式的输出。
四、运行结果
1、从键盘输入任意中缀表达式,如:
4 - 5 * 6 DIV 4 + 8 MOD 2
输出相应的后缀表达式:
456*4DIV-82MOD+
1、 若键盘输入串为非中缀表达式时,如:
4 !+* 5 - 6 DIV 4 + 8 MOD 2
输出相应语法错误报告信息,并停止语法分析,如:
line 1 : compiler error !
1