LL(1)分析法

LL(1)分析法又叫预测分析法,是一种不带回溯的非递归自顶向下的分析法。

LL(1)是不带回溯的非递归的分析法是因为,它每次都只有一个可用的产生式,所以是不带回溯和非递归的,当无法处理输入符号时,即出错。

第一个L表示是从左到右扫描输入串,第二个L表示推导过程中使用最左推导,(1)表明只需要向右看一个符号,就可以决定如何推导的(即知道用哪个产生式进行推导)。

什么是LL(1)分析法

LL(1)分析法的原理是这样的,它的基本思想是根据输入串的当前输入符号来唯一确定选用哪个产生式来进行推导。

比如当前的文法符号是S,面临输入串的首个符号是a, 存在若干个产生式,$S->X_1|X_2|...|X_k$,如果$a \in FIRST(X_i)$,那么肯定就是用$S->X_i$这个产生式来进行推导。

又或者当前的文法符号是S,面临的输入串的首个符号是a,存在产生式$S->X$,若 $\epsilon \in FIRST(X)$, 且$a \in FOLLOW(S)$,那么肯定是用产生式$S=>\epsilon$进行推导。即当然文法符号是没用的。

所以LL(1)文法要满足下面的条件,若存在$S->X_1|X_2$

(1)$FIRST(X_1) \bigcap FIRST(X_2) = \phi $ 。即如果对于文法符号S,有两个产生式的$FIRST$交集不为空,那么就是二义的,就不是LL(1)文法

(2)若$\epsilon \in FIRST(X_2),  则有FIRST(X_1) \bigcap FOLLOW(X_2) = \phi$,同样的,这样也是二义的。

对LL(1)文法构造LL(1)分析表

根据上面的思想,我们可以预处理出一张LL(1)分析表,对于任意的文法符号S,面临输入符号a,该用哪个产生式。

为什么左递归文法不是LL(1)文法

形如A->Ab|c的文法,就是左递归文法,可以看出$FIRST(A)=FIRST(c)$,所以左递归文法不是LL(1)文法。

即对左递归构造的LL(1)分析表是有二义性的。

时间: 2024-08-13 11:32:37

LL(1)分析法的相关文章

【转】LR分析法

转自:http://guanjy0129.blog.163.com/blog/static/1115494452010614113333509/ LR分析法的归约过程是规范推导的逆过程,所以LR分析过程是一种规范归约过程. LR分析法正是给出一种能根据当前分析栈中的符号串(通常以状态表示)和向右顺序查看输入串的K个(K≥0)符号就可唯一地确定分析器的动作是移进还是归约和用哪个产生式归约,因而也就能唯一地确定句柄. 其中LR(0)分析器是在分析过程中不需向右查看输入符号,因而它对文法的限制较大,然

建模算法(十一)——层次分析法

(一)层次分析法的基本原理与步骤 一.步骤 1.建立递阶层次结构模型 2.构造出各层次中的所有判断矩阵 3.层次单排序及一致性检验 4.层次总排序及一致性检验 二.递阶层次的建立与特点 1.分层: (1)最高层:这一层次中只有一个元素,一般它是分析问题的预定目标和理想结果. (2)中间层:这一层次中包含为了实现目标所涉及的中间环节,主要是一些考虑指标和一些准则. (3)最底层:这一层次中包含为了实现目标可供选择的各种方案. 2.注意点: 一般不要1层不要超过9个因素 3.一个demo 是三个旅游

实验三 递归下降分析法

实验三递归下降分析程序实验 专业 商软2班   姓名 蓝海鹏  学号 201506110171 一.        实验目的      编制一个使用递归下降分析法实现的语法分析程序. 二.        实验内容和要求 输入:正规式 输出:判断该正规式是否正确. 三.        实验方法.步骤及结果测试 1.      源程序名:171-蓝海鹏.c 可执行程序名:171蓝海鹏.exe 2.      原理分析及流程图 3.      主要程序段: 1 #include<stdio.h> 2

软件测试- 测试用例之边界值分析法

根据大量的测试统计数据,很多错误是发生在输入或输出范围的边界上,而不是发生在输入/输出范围的中间区域.因此针对各种边界情况设计测试用例,可以查出更多的错误. 比如一个文本框的可输入字符长度为0~15,那么咱们在测试的时候就会习惯性的输入0个或者16个以上的字符,试试程序会不会报错,因为直觉告诉我们这样出错的几率比较大.这就是在不自觉中应用了边界值分析法. 概念 边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法.通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等

交流等效电路分析法

在信号输入时,电路中各个环节的电压或电流,就要按输人信号的变化规律及电路对输 人信号的响应规律而变化.这种变化可分两种类型.一种是电路中各点电压或电流的变化规律是与输人的信号变化规律相同的(同相或反相这种电路)就是通常所说的放大电路和LC 振荡电路,另一种是电路中各点电压或电流的变化规律与输人信号的变化规律不完全相同,但它们之间有一定的关系,例如微分关系.积分关系等.这种电路常见的有各种脉冲电路. 各种解调电路等.在信号输人后,对于前一种电路采用交流等效电路分析法. 交流等效电路分析法,是把电路

盈亏平衡分析法

属于确定型决策. 成本函数:C(x) = ax+b,a.b为常数,b为固定成本,ax为变动成本,a为单个产品的变动成本: 收益函数:R(x) = Px,P为商品价格,x为销量: 利润函数:L(x) = R(x)-C(x): 盈亏平衡点:即L(x) = 0时,x的值:x = b/(P-a): 则x>0时,企业盈利:x<0时:企业亏损:x=0时:企业保本经营. 盈亏平衡分析法,布布扣,bubuko.com

Procrustes Analysis普氏分析法

选取N幅同类目标物体的二维图像,并用上一篇博文的方法标注轮廓点,这样就得到训练样本集: 由于图像中目标物体的形状和位置存在较大偏差,因此所得到的数据并不具有仿射不变性,需要对其进行归一化处理.这里采用Procrustes分析方法对样本集中的所有形状集合进行归一化.形状和位置的载体还是样本点的空间坐标.      普氏分析法是一种用来分析形状分布的方法.数学上来讲,就是不断迭代,寻找标准形状(canonical shape),并利用最小二乘法寻找每个样本形状到这个标准形状的仿射变化方式.(可参照维

递归下降分析法

实验三 递归下降分析法 实验三递归下降分析程序实验 专业 商软2班   姓名 李文辉  学号 201506110168 一.        实验目的      编制一个使用递归下降分析法实现的语法分析程序. 二.        实验内容和要求 输入:正规式 输出:判断该正规式是否正确. 三.        实验方法.步骤及结果测试 1.      源程序名:168-李文辉.c 可执行程序名:168李文辉.exe 2.      原理分析及流程图 3.      主要程序段: 1 #include

层次分析法量化用户的产品偏好

用户对产品有很多行为,如何进行用户行为分析来量化用户对产品的喜好程度呢? 比如豆瓣FM,用户可以点击"喜好"和"扔进垃圾箱"等:比如优酷视频,用户可以顶,踩,分享等. 我们如何通过这些行为信息分析用户对这首歌的喜好程度,对这个视频的评分是多少. 下面实例分析用户对视频的喜好程度.说到视频,我们可以联想到各种用户行为,看了多久,是否评论,是顶是踩,是否分享? 我们可以通过这些指标来评估用户对该视频的打分.比如用户看了多久打多少分,分享了打多少分等.还有就是不同的行为也