⑴ 编译原理关于FIRST,FLLOW的问题。
求FIRST,FLLOW集合的过程是一个递归过程..描述出来很繁琐的,
我打字慢......
编译原理书上有算法的描述的..你自己理解一下,不难的...
不懂的地方最好问身边的同学或老师...当面讲解比较清楚一点.
给你个例子吧:
文法:
E->E+T|T
T->T*F|F
F->(E)|i
按照求文法FIRST,FLLOW的算法,FIRST(E)过程大概是:
1.FIRST(E)=FIRST(E) U FIRST(T) //E,T都是非终结符,所以
继续求First
2.FIRST(T)=FIRST(T) U FIRST(F)//F,T都是非终结符,所以
继续求First
3.FIRST(F)={(,i} //(,i是终结符,得出最后结果.
FIRST(E)={(,i}..
FIRST懂了的话,看FLLOW的算法也就好懂了...
还有什么问题的话...可以发消息给我..
⑵ 编译原理:FIRST(A) 集合与FOLLOW(A)集合
1.设计一个演示窗口,包括几本的操作按钮和显示窗口; 2.设计first集合和follow集合生成算法 3.输入文法,按要求显示first集合和follow集合
⑶ 怎么求编译原理中的first集,follow集和selec集
由于终结符的first集合就是它自己,所以求出非终结符的first集合后,就可很直观地得到每个字符串的first集合三,first集求法
first集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的first集合
⑷ 怎么求编译原理中的first集,follow集和selec集
如果题目是单纯求first、follow集合,不需要消除左递归。但是,如果求first、follow集合是为了判断文法是否为LL(1)文法的话,可以直接得出否定的结论(因为含有左递归的文法绝对不是LL(1)文法)。可以先对文法进行改写,一般是消除左递归和提取左公共因子,然后再判断。
⑸ 编译原理 aBbG+Y=)的 first集 怎么求
设I->aBbG+Y=)
first(I)={a}
⑹ 编译原理计算first 集和follow集的简单方法 S->bBS' S'->aAS'|ε A->aB|c B->dB' B'->bB'|ε 求计算过程
first : S'=a,ε
S=b
A=a,c
B=d
B'=b,ε
follow: S'=#
S=#
A=a
B=a
B'=a
⑺ 编译原理first,follow集怎么求
三,FIRST集求法 First集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的First集合,由于终结符的First集合就是它自己,所以求出非终结符的First集合后,就可很直观地得到每个字符串的First集合。
⑻ 怎样求First集和Follow集
First集:是首字母所构成的集合。
Follow集:是这个字母后紧接着的字母集合,如果这个字母包含空,则Follow集包含First集的全部。
⑼ 关于编译原理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啊。。。
只要follow额,这样,follow(E),把所有包含你要求的符号的产生式都找出来,有F -> (E)|id,那E后面就是),其他包含E的都没有,所以follow(E)={),#},E‘,包含E’的产生式有E -> TE',再由F -> (E)|id推出F -> (TE‘)|id,则E’后面也有),则follow(E’)={),#};T,包含T的产生式有E -> TE'、E' -> +TE'|ε,T后面是E‘(+TE'|ε),则T有+,,再根据F -> (E)|id,(TE')|id,E‘又可以是空(ε),则T后面有),则follow(T)={+,),#}。 T‘同理,包含T’的有T -> FT'、T' -> *FT'|ε,F -> (E)|id,推出F -> (TE‘)|id,再推出F -> (FT'E')|id,E'可以推出ε,则T'后面有),由E -> TE'推出E -> FT‘E',则T’后面是E‘,E' -> +TE'|ε,则follw(T’)含有+,所以follow(T‘)={+,),#}。
F嘛,自己推推,都是这样做得