编译原理试题A及答案 下载本文

内容发布更新时间 : 2024/5/17 17:30:45星期一 下面是文章的全部内容请认真阅读。

A→[B,B→X]{A},X→(a|b){a|b}即 A→[B B→X]{A} X→(a|b){a|b}

可以先变换:B→X]{ [B } A()

{ if ( sym==’[‘ ){ scaner(); B(); } else error(); } B() { X();

if(sym==’ ] ‘){ scaner(); while(sym==’[‘) { scaner();B(); } }else error(); } X()

{if(sym==’a‘) {scanner();}

else if(sym==’b‘) {scanner();} else error(); while(sym==’a‘ or sym==’b‘) { scanner();} }

得 分 五、综合题(本大题共2小题,每小题7分,共14分)

1.将下列NFA确定化,并画出最小化的DFA。

输入a 输入b {0} {0,1} {1} {1} {0,1} {1} {0,1} {0,1} {1}

{0} {1,2} f(1,a)=2 f(2,a)=2 f(1,b)=1 f(2,b)=1 {1,2}等价

得 分 2. 给定文法G[S]:S→AS|b,A→SA|a, 1)构造它的LR(0)项目集规范簇;

2)构造识别该文法所有活前缀的DFA。

项目集规范族: I0:S’→ .S

S→.AS S→.b A→.SA A→.a I1: S’→ S. A→S.A A→.SA A→.a S→.AS S→.b 等

DFA即我们经常画出的图(I0、I1等之间有弧和弧上标记的符号) 参看习题4.8