导航:首页 > 源码编译 > 编译原理first集合代码

编译原理first集合代码

发布时间:2022-08-24 06:16:57

1. 编译原理first,follow集怎么求

三,FIRST集求法 First集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的First集合,由于终结符的First集合就是它自己,所以求出非终结符的First集合后,就可很直观地得到每个字符串的First集合。

2. 关于编译原理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)文法
计算的公式很繁杂,理解了意思之后,看就能看出来。。。。

3. 编译原理 跟随集

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

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

4. 怎么求编译原理中的first集,follow集和selec集

由于终结符的First集合就是它自己,所以求出非终结符的First集合后,就可很直观地得到每个字符串的First集合三,FIRST集求法 First集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的First集合

5. 编译原理文法FIRST和FOLLOW

FLLOW(X)就是直接出现在非终结符X后面的终结符集合例如FOLLOW(T)={int,real,$}

6. 急求一编译原理算法:要求用C写:设计一个算法,求出任一上下无关文法中所有非终极符的First集合,并输出

这个要写不少啊。我那里有课程设计的代码。不过明天才能给你。分数太少啦

7. 一个编译原理的问题

First(α) 是符号串α的开始符号集合。
也就是说,用推导的方法对α进行推导,一次次地使用产生式,用产生式右部的符号串替换一个非终结符,所有那些可能出现在第一个符号位置的终结符,就构成了开始符号集。
比如,在C语言中,对于符号串“语句”来说,标识符(赋值语句)、if(条件语句)、printf(输出函数)这些单词(终结符)都是它开始符号集合中的元素,而+(加号)、}(右花括号)不可能出现在“语句”的开头,所以不是它的开始符号集合中的元素。

Follow(A)是非终结符A的后跟符号集合。
它是指在所有可能的句型中,一切可能出现在非终结符A后面的一个终结符。
这里要特别注意是在“句型”中。

你可以自己举例,比如分析一下C语言中“表达式”后面可能跟哪些单词,它们就是非终结符“表达式”后跟符号集合中的元素。

你说的这两个集合的交集问题不存在。
因为它们针对的是不同类型的对象(一个是符号串,另一个是某个非终结符)。
实际上,在选择集合问题中,考虑的不是它们的交集,而是一个产生式右部符号串的First集跟这个产生式左端非终结符的Follow集的并集。

考虑交集的,发生在相同左部的不同产生式的选择集合之间。

8. 编译原理

FIRST(begin d ;X end)={begin}
FIRST(d ; X)={d}
FIRST(sY)={s}
FIRST(ε)={ε}

FOLLOW(P)={#}
FOLLOW(X)={end}
FOLLOW(Y)={end}

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

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

10. 编译原理关于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集合代码相关的资料

热点内容
javajdbcmysql连接 浏览:469
制作linux交叉编译工具链 浏览:751
编程负数除以正数 浏览:510
app和aso有什么区别 浏览:324
手机vmap是什么文件夹 浏览:36
塔科夫锁服如何选择服务器 浏览:288
消费者生产者问题java 浏览:59
程序员筱柒顾默结婚的时候 浏览:576
安卓截长屏怎么弄 浏览:473
优信办理解压手续怎么那么慢 浏览:603
私有云服务器一体机安全吗 浏览:428
python的tk界面禁用鼠标 浏览:184
怎么看服务器mac地址 浏览:290
安卓如何将图镜像翻转 浏览:325
操作系统设计与实现pdf 浏览:547
长虹空调遥控什么app 浏览:739
四轴外圆编程教程 浏览:947
vb在线编译环境 浏览:886
编译原理全书知识点总结 浏览:908
javaoa开发 浏览:883