首页 > 编程知识 正文

编译原理回溯是什么(编译原理lr分析法)

时间:2023-05-06 19:21:16 阅读:74465 作者:2338

编译原理实验——递归下降分析法(回溯) 1、实验目的和内容采用递归下降分析法,根据以下语法内容编制程序:

ete’e’ate’|tft’t’MFT’|f(e )| iA | -M * | /输入:类似于“i*i i-i”的表达式。

输出:此表达式的分析。 示例:

2、整个程序的设计思路和框架的无回溯递归下降分析,需要手动求解select集,为了避免手动求解的麻烦(主要是懒惰),采用有回溯递归下降分析的方法。

根据生成式记述函数时,一个生成式对应于一个函数。 如果存在多个候选表达式,则默认生成表达式选择第一个候选表达式,如果错误推送,则在追溯时选择下一个候选表达式。

函数退出递归条件和回溯状态复位是主要难点。

3、为了打印主要数据结构和工艺描述上图所示的结果,分别用一个信息节点(info_node )表示。

struct info_node //保存分析步骤的信息{ //int steps_number; //分析步骤编号string grammer; //使用的语法string hv_ana; //已经分析的字符串char bi_ana; //分析中的字符string rem_str; //剩下的字符串info_node(/*intsteps_number、*/string grammer、string hv_ana、char bi_ana、string rem_str )//this-hv_ana=hv_ana; this-bi_ana=bi_ana; this-rem_str=rem_str; }; 如果从未进行派生,则会生成一个node,其中包含用于派生的语法、分析的字符串、正在分析的字符串和未分析的字符串。

4、测试结果和说明1这样正确的测试范例,以下给出错误的测试范例。

输入: i*

输出:

5、实验成果和反思增强了回溯算法的写作能力。

附录代码地址

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。