第三次上机作业
1. 编写First和Follow函数,实现其求解过程。
(1)FIRST集合计算方法:
① 若Xa.., 则将终结符a加入FIRST(X)中;
② 若X,则将加入FIRST(X)中;
③ 若XY…,且Y属于非终结符,则将FIRST(Y)\{}加入到FIRST(X)中;(注:“\”表示除去元素,即FIRST(Y)中的非元素加入到FIRST(X)中。以下同理。)
④ 若XY1Y2..YK,且Y1,Y2,..Yi-1都是非终结符,且Y1,Y2,..Yi-1的FIRST集合中均包含,则将FIRST(Yj)的所有非元素加入到FIRST(X)中,(j=1,2,..i).特别地,若Y1~YK均有产生式,则将加到FIRST(X)中。
(2)FOLLOW集合计算方法:
① 对文法开始符号S,置$于FOLLOW(S)中。
② 若有AB,则将FIRST()\{} 加入FOLLOW(B)中。 (此处 可以为空)
③ 若A B 或A B ,且 * (即 属于FIRST()),则将 FOLLOW(A)加入FOLLOW(B)中(此处 可以为空)。
2. 测试文法:
A->BCDE
B->aBA|ε
C->F|ε
D->b|c|ε
E->e|ε
F->d|ε
2019-12-21 19:37:55
7KB
编译原理
1