自上而下的语法分析递归下降法,LL(1)预测分析法,预测分析表 因果预测分析法
简而言之,就是比如文法是
S→T,T→FM,F→+M,M→a
用伪代码表示这个文法
则首先要写procedureS
BEGIN
T;
END
然后写procedureT
BEGIN
F;
M;
END
ProcedureF
BEGIN
+M;
END
ProcedureM
BEGIN
匹配a
END
这样的过程是递归下降的过程。递归下降方法仅表示一种思路,没有特别的
※LL(1)预测分析法:
第一个L表示从左到右扫描输入串
第二个L表示最左推导
1表示分析时每步只需向前查看一个符号
考虑First集和FOLLOW集:
First集,FIRST(α)是由α推导出的所有的第一个终结符号组成的集合
FOLLOW集:FOLLOW(A)是由所有句型中紧跟在A后面的终结符a组成的集合
引入FOLLOW集的意义是,在有空转换的文法里,有时候不能确定是否把这个非终结符变成空,这就要看看这个非终结符跟着的元素,是否有可能匹配下一个元素。如果能匹配,那么就可以把它变成空
※※预测分析表
例
文法:
各个非终结符的first集合:
关于follow集合我们只要考虑有可能变成空转换的非终结符:
根据FIRST集和FOLLOW集可以生成一张LL(1)文法的预测分析表:
预测分析表法的分析过程:
要以表格的形式,列出分析栈的变化,输入,和输出动作:
以下是上面的文法对于id+id*id串的分析过程
错误恢复:同步符号
有时候输入的串可能有点小错误掺杂了一些不该有的符号,可以利用同步符号synch跳过这些符号,使语法分析能够继续:
这就要考虑所有非终结符的FOLLOW集合:
以上面的文法的预测分析表做例子
FOLLOW集合:
加入错误处理的预测分析表:
串 )id+*id的分析过程:
更多阅读
常用的精神分析法有哪些? 精神分析法文学作品
常用的精神分析法有哪些?——简介心理治疗的常用方法里有一类是精神分类法,那么常用的精神分析法有哪些?常用的精神分析法有哪些?——方法/步骤常用的精神分析法有哪些? 1、
递归法与回溯法一 php递归法
看过这样一道题,问,“程序结构化设计的三种基础结构,顺序、选择、循环是不是必须的?”当然,你知道这样一个论断,只要有这三种就足够了;但是能不能更少呢?答案是“可以”,原因就是递归能取代循环的作用,例如下面的对一个数组里面元素求和的
政治隐晦语的语法分析报告 政治审查报告
因为各种原因,网上存在大量政治隐晦语,用以表达一些不便直接表达出来的意思。本着不违反国家法律的原则,在语法上对于这些政治隐晦语进行一个简单的语法分析,共同鉴赏网民的智慧。“方便面”众所周知这个是指代谁的。“方便面”这个代
理解递归的工作原理 怎么理解递归
为了理解递归的工作原理,你需要追踪递归调用的执行过程,所以让我们来进行这项工作。追踪一个递归函数的执行过程的关键是理解函数中所声明的变量是如何存储的。当函数被调用时,它的变量的空间是创建于运行时堆栈上的。以前调用的函数的
市场营销研究中的结合分析法 柯惠新保罗 lr分析法 左结合
市场营销研究中的结合分析法莫 逸市场营销研究中一个经常遇到的问题是:在所研究的产品/服务中,具有哪些属性的产品最能够受到消费者的欢迎。一件产品通常拥有许多属性如价格、颜色、款式以及产品的特有功能等,那么在这些特性之中,每个