
基于词法与语法分析的上机结果,增加语义分析环节。具体而言,在LR文法框架下,于产生式归约过程中实施相应的语义操作。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本研究在LR文法基础上,提出在语法归约阶段嵌入语义分析,旨在提升代码解析精度和程序理解能力,增强编译器功能。
目标:深入理解语义分析的方法及相关的语义计算执行时机。
要求:
1. 以S属性的语法制导定义为基础,在语法分析过程中嵌入下表所示的语义规则,从而实现基于语法制导的翻译过程。
| 产生式 | 语义规则 |
|--------------|------------------------|
| L → E n | print (E.val) |
| E → E1 + T | E.val := E1 .val + T.val |
| E → T | E.val := T.val |
| T → T1 * F | T.val := T1.val * F.val|
| T → F | T.val := F.val |
| F → (E) | F.val := E.val |
| F → digit | F.val := digit.lexval |
2. 在词法分析和语法分析的基础上增加语义分析部分。以LR文法为基础,当进行产生式归约时执行相应的语义动作。
3. 输入:5+3+8*2 输出:结果为24
4. 若输入错误(例如:3++2),应提示用户重新输入!
5. 由于输入字符串是具体的数值,因此需要调用词法分析的功能。
扩展:
1. 对浮点数和科学计数法的表示同样能够完成上述操作。
2. 增加减法和除法(也可继续扩展其他运算)对应的产生式,并能计算其语义结果。
3. 在提供的上机作业文件夹中,有两个压缩包分别使用递归下降方法实现的程序在“recursion_calculator.rar”中以及用非递归预测分析方法实现的程序在“predict_calculator.rar”中。可以选择一个作为基础进行改进,增加减法和除法的操作,并写出改进后的文法规则及输出表达式的结果。
全部评论 (0)


