DCS292 编译器构造实验,手工编写递归下降预测分析程序(2.3)

help-assignment

2.4 实验四、手工编写递归下降预测分析程序

实验四要求你利用 Java 语言手工编写一个 Oberon-0 语言的语法分析程序,该语 法分析程序执行与实验三自动生成的语法分析程序类似的功能,但实验三要求逆 向工程工具生成的是调用图,而实验四要求生成的是流程图(Flowchart)。
该语法分析程序采用递归下降预测分析技术,要求你遵循语法制导翻译思想,先 设计 Oberon-0 语言的翻译模式,再据此编写语法分析程序。
2.4.1 实验步骤 4.1、设计 Oberon-0 语言的翻译模式
根据 Oberon-0 语言 BNF 定义中的语法规则,以及你完成 Oberon-0 源程序处理的 应用需求,为 Oberon-0 语言设计一个合适的翻译模式。
注意,由于实验四规定使用递归下降的预测分析技术,你需要改造文法以适用于 这种自顶向下的分析方法。例如,上下文无关文法中的左递归必须消除,以避免 递归下降的预测分析程序进入死循环。
2.4.2 实验步骤 4.2、编写递归下降预测分析程序
根据上一步骤获得的翻译模式,利用 Java 语言设计并实现一个 Oberon-0 语言的递归下降预测分析程序。
结合编译原理理论课所学知识,从一个翻译模式设计一个递归下降预测分析程序 已有比较成熟的启发式规则,你应遵循这些规则设计你的语法分析程序。
例如:文法的每一非终结符号应对应着一个递归子程序,开始符号则对应着其中 的主程序;由向前看符号(Lookahead)决定分支动作;每一个继承属性对应一 个形式参数,所有综合属性对应返回值,子结点的每一属性对应一个局部变量; 翻译模式中产生式右部的结终符号、非终结符号与语义动作分别执行匹配、递归 调用和嵌入代码等动作。
2.4.3 实验步骤 4.3、语法分析讨论:自顶向下 vs. 自底向上
通过你自己在实验三和实验四的实际体会,对递归下降预测分析技术和自底向上 的 LR 分析技术这两种不同的分析策略进行比较。
建议你在比较两种技术的各自优点和不足时,考虑(但不必局限于)以下方面:
 分析技术的简单性,包括分析程序是否易于调试。
 分析技术的通用性,即能处理的语言范围。
 是否便于表达语义动作以完成语法制导翻译。
 是否易于实现出错恢复。
 若以表格驱动方式取代递归程序实现,则分析表大小的优劣如何?
 分析速度

contact me on V help-assignment

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值