文法fellow怎么用集中什么时候包含#?

2011年中山职业技术学院毕业现担任毅衣公司京东小二


定义:令X为一个文法符号(终止符或非终止符)或ε,则集合First(X)有终止符组成,此外可能还有ε,它的定义如下:

給出一个非终结符A那么集合Follow(A)则是由终结符组成,此外可能还含有#(#是题目约定的字符串结束符)集合Follow(A)的定义如下:

1. 若A是开始苻号,则#在Follow(A)中

对于产生式A—>α。集合select(A—>α)定义如下:

具体例题:判段G1[E]是否是LL(1)文法。

Select(⑤)= follow(F)= {], #} (5)//产生式⑤中的α为ε(即空),故等于Follow(F)由产生式③知F后为空,故E的follow集也包含在F的follow集中(理由见follow集定义第三条)再看E的follow集。首先E是开始符故“#”在follow(E)中,叒由②或⑦知“]”也在follow(E)中故Select(③)

因为同一个非终止符的不同产生式(即①②③,④⑤⑥,⑦⑧这四组)所对应的select集(即(1)(2)(3),(4)(5),(6),(7)(8))都没有交集所以该文法是LL(1)文法。

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

编译原理课程设计说明书--词法分析,语法分析,语义分析

设计思路:整体上采用不动点算法

依次扫描每条文法右部若遇到终止符,则将该终止符加入文法左部非终止符的first集Φ如果遇到非终止符,则先判断该终止符的first集合中是否包含@(“@”代表“可空”)如果不包含@,则将该非终止符的first集加到文法左部的非终止符的first集中;如果包含@并且该非终止符不是最后一个非终止符,则将该非终止符的first集合去掉@后加到文法左部的first集合中;否则直接將此非终止符的first集合加到文法左部的first集合中。

对于任意给定的LL(1) 文法G,为了构造它的预测分析表M,我们就必须构造与文法G有关的集合First和fellow怎么用.首先我们对每一个X∈VT U Vn ,构造

/*统计文法条数非终止符个数,终止符个数并把非终止符,终止符弄成一个字符串用于查找下标*/

将间接左递归變成左递归,然后消除直接左递归 (1) 把文法的所有非终止符按某一顺序排序,如: A1A2,…….An;

(2) 从A1开始消除都为A1的产生式的直接左遞归然后把左部为A1的所有规则的右部逐个替换为A2开始的产生式中的A1,并消除左部位A2的产

我要回帖

更多关于 fellow怎么用 的文章

 

随机推荐