本文最后更新于:2019年11月15日 晚上
概览:基于《编译原理(第三版)》(清华大学出版社,王生原版)的递归子程序分析器程序。
实验内容
本分析程序所分析的文法如下:
1 2 3 4 5
| G[E]: E→eBaA A→a|bAcB B→dEd|aC C→e|dC
|
针对上述文法编写一递归子程序分析程序,该程序的输入是任意符号串,输出是本次输入的符号串是否是该文法的句子的结论。
测试样例为:
1 2 3
| eadeaa# edeaebd# edeaeaadabacae#
|
分析说明
分析说明:
针对上述文法求得各个非终结符的First集、Follow集以及各个产生式的Select集。
1 2 3 4 5 6 7 8 9 10
| FIRST(E) = {e}、FIRST(A) = {a,b}、FIRST(B) = {a,d}、FIRST(C) = {d,e} FOLLOW(E) = {#,d} FOLLOE(A) = {#,c,d} FOLLOW(B) = {#,a,c,d} FOLLOW(C) = {#,a,c,d} SELECT(E->eBaA) = {e} SELECT(A->a) = {a} SELECT(A->bAcB) = {b} SELECT(B->dEd) = {d} SELECT(B->Ac) = {a} SELECT(C->e) = {e} SELECT(C->dC) = {d}
|