当前位置:首页 » 编程软件 » 编译原理follow集概念

编译原理follow集概念

发布时间: 2022-06-24 13:59:20

Ⅰ 关于编译原理first follow 和select

首先要明白这三个集的作用和用途,知道了他们是用来做什么的之后,理解起来就简单一些
First(A)集的作用是标示在替换非终结符A的时候,替换后的文法的首字母集合,语法分析程序根据这个来判断给定的语言是否是合法的,是符合规则的。
Follow(A)的作用是标示那些可以出现在A之后的字符,语法分析程序根据这个,在A可以被替换为e(空)的时候来进行判断,看当前的文法是否是合法的。
这里简单说明下,比如A->b,A->e(空) 当给定的语言是 bXXXXX的时候,根据第一句文法就可以判定句子合法,但是如果给的语言是cXXXXX的时候,因为A->可以替换为空,这时候就需要一句A的follow集来进行判断,若A的follow集里面含有c 则语言是合法的
Select集的作用是将first集和follow集进行合并,如果两个文法的左端都是A,若他们的select集交集为空,表明他们是两个无关的,不会产生不确定性的文法,反之,则表明文法不是LL(1)文法
计算的公式很繁杂,理解了意思之后,看就能看出来。。。。

Ⅱ 编译原理 FOLLOW集

因为有:
T→ F T’
T’→ *F T’
所以FIRST(T')是FOLLOW(F)的子集。所以 * 是FOLLOW(F)中的元素。
因为有:
T→ F T’
T’→ε
所以FOLLOW(T)是FOLLOW(F)的子集。
因为有:
E’→ +TE’
所以FIRST(E‘)是FOLLOW(T)中的子集。所以FIRST(E‘)是FOLLOW(F) 中的子集。
因为有:
E’→ +TE’
所以+是FIRST(E’)中的元素,所以+是FOLLOW(F)中的元素。
因为有:
E’→ ε
E → TE’
所以有:
FOLLOW(E)是FOLLOW(T)子集。前面有所以FOLLOW(T)是FOLLOW(F)的子集。所以有
FOLLOW(E)是FOLLOW(F)的子集,
由F → (E)|id
知 ) 是FOLLOW(E)的元素。所以 ) 是FOLLOW (F)的元素。
因为E是开始符号,所以有 $ 是FOLLOW(E)中的元素,所以 $ 是FOLLOW(F)中的元素。
综上所述:
FOLLOW(F)= {*,+,),$}

Ⅲ 编译原理follow集怎么求例:s->xSNy|Nx;N->zN|空 答案:follow(S)={y,z,#},follw(N)={x,y}什么时候有#

  1. 求某一非终结符的follow集,主要看产生式右端(含有该非终结符的右端)。

  2. 因为S是该文法的开始符,所以#在follow(S)中。在产生式S->xSNy的右端,S的后跟符号是first(Ny),即z和y。这样follow(S)={y,z,#}

  3. 求follw(N)时,看产生式S->xSNy和S->Nx,在它们的右端都含有N,根据S->xSNy可知,y在follw(N)中;根据S->Nx可知,x在follw(N)中;这样follw(N)={x,y}

    虽然产生式N->zN的右端也含有N,但根据follow集合的定义,将follw(N)加入follw(N)中没有意义,所以不用计算。

  4. 对于不是开始符的其他非终结符,其follow集合有没有#,要看产生式的结构(产生式右端)。

Ⅳ 编译原理:FIRST(A) 集合与FOLLOW(A)集合

1.设计一个演示窗口,包括几本的操作按钮和显示窗口; 2.设计first集合和follow集合生成算法 3.输入文法,按要求显示first集合和follow集合

Ⅳ 编译原理求解答案

编译原理是计算机软件专业中的非常重要一门课程。例如:如何把我们编写的高级语言源程序,翻译成机器可执行的目标程序,这个就需要用到编译原理技术。

但是学习编译原理这门课程时,是需要头脑中对编译原理课程中涉及到的所有概念必须是相当清楚的,别人才能够对你的这些问题进行准确的回答。而不是看到这些似曾亲切的内容就敢于回答你的内容的。
故我个人的建议还是:你可以向专门讲授编译原理的老师请教你的问题。
以上就是我很多年前学习编译原理的亲身体会。

Ⅵ 编译原理 跟随集

先求FIRST集:
first(S)={a,b}
first(A)={b,ε}

再求FOLLOW集:
follow(S)={#}
follow(A)=first(S)Ufollow(A)={a,b}

Ⅶ 急求!怎么求编译原理的FOLLOW集合在线等~

follow集合是针对非终结符而言的;follow(U)所表达的是句型中非终结符U的所有可能的后随终结符号的集合,特别注意一点:“#”是识别符号的后随附。
直接收取:形如“……Ua”的组合,直接把啊收入到follow(U)中
直接收取:形如“……UP……”的组合,(P是非终态符);把firth(P)除去ε直接收入到follow(U)中。
反复传递:形如“P-……U”的产生式,
follow(P)的全部内容传递到follow(U)中,或者说是P-……UB且first(B)包含ε,则把first(B)除去ε直接收入到follow(U)中,同时吧follow(P)的全部内容传送到follow(U)中...

Ⅷ 编译原理中,在文法G中,E'的follow集为什么会含有右括号,题和答案如图,求解答

这个问题中的一个产生式E’→+TE’| e,应该是E->+TE’ |ε这样吧!否则不可能获得如此结果.
关于求follow集合,龙书中说得很清楚,依据三条规则即可:
1、任何FOLLOW(S)都包含输入终止符号,其中S是开始符号.
适用该条,因此FOLLOW(E’)中包含终止符号#.
2、如果存在产生式,A->αBβ,则将FIRST(β)中除ε以外的符号都放入FOLLOW(B)中.
该条不适用,因为在上述所有产生式中不存在形如E‘->αE’β这样的产生式.
3、如果存在产生式,A->αB,或A->αBβ,其中FIRST(β)中包含ε,则将FOLLOW(A)中的所有符号都放入FOLLOW(B)中.
适用该条,因为存在这样的产生式E->+TE’,使得FOLLOW(E’)=FOLLOW(E)成立.而FOLLOW(E)适用上述第二条,根据产生式F→(E)可求得为FOLLOW(E)={#,)}.
综上,FOLLOW(E’)=FOLLOW(E)={#,)}.

Ⅸ 编译原理的follow集怎么求

希望你最好能给几个例子了,看所有右部产生式有与你要求的非终结符的式子,与你要求的非终结符后面的那个如果是终结符的话那么它就应该属于你要求的FLLOW集了,如果是非终结符的话,求那个非终结符的FIRST集也属于你要求的。以后最好给个例子哈,不能的话很难回答你的。

热点内容
如何登录不知道密码的wifi网 发布:2024-05-08 23:09:42 浏览:993
java速学 发布:2024-05-08 23:08:43 浏览:748
爱心代码的编译器 发布:2024-05-08 22:47:08 浏览:343
冲突数据库 发布:2024-05-08 22:47:02 浏览:425
c语言双重性 发布:2024-05-08 22:40:57 浏览:438
java输出键 发布:2024-05-08 22:28:02 浏览:143
自然人税收管理系统网络设置服务器地址 发布:2024-05-08 22:21:33 浏览:868
如何在桌上设置密码 发布:2024-05-08 22:21:32 浏览:658
oracle触发器与存储 发布:2024-05-08 22:21:26 浏览:383
100台电脑无盘服务器 发布:2024-05-08 22:12:08 浏览:868