新建
上传
首页
助手
最?/div>
资料?/div>
工具

编译原理习题解答

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

?/p>

1/1 

第五?/p>

 

自顶向下语法分析方法

 

1

.对文法

G[S] 

 

S

?/p>

a|

?/p>

|(T) 

 

T

?/p>

T,S|S 

(1)

 

给出

(a,(a,a))

?/p>

(((a,a),

?/p>

,(a)),a)

的最左推导?/p>

 

(2)

 

对文?/p>

G

,进行改写,然后对每个非终结符写出不带回溯的递归子程序?/p>

 

(3)

 

经改写后的文法是否是

LL(1)

的?给出它的预测分析表?/p>

 

(4)

 

给出输入?/p>

(a,a)#

的分析过程,并说明该串是否为

G

的句子?/p>

 

解:

 

(1) (a,(a,a))

的最左推导为

S

?/p>

(T)

?/p>

(T,S)

?/p>

(S,S)

?/p>

(a,(T))

?/p>

(a,(T,S))

?/p>

(a,(S,a))

?/p>

(a,(a,a)) 

(((a,a),

?/p>

,(a)),a)

的最左推导为

 

 

S

?/p>

(T)

?/p>

(T,S)

?/p>

(S,a)

?/p>

((T),a)

?/p>

((T,S),a)

?/p>

((T,S,S),a)

?/p>

((S,

?/p>

,(T)),a)

?/p>

(((T),

?/p>

,(S)),a) 

 

 

?/p>

(((T,S),

?/p>

,(a)),a)

?/p>

(((S,a),

?/p>

,(a)),a)

?/p>

(((a,a),

?/p>

,(a)),a) 

(2)

由于?/p>

T

?/p>

T,S

的产生式,所以消除该产生式的左递归,增中一个非终结?/p>

U

有新的文?/p>

G

/

[S]: 

 

S

?/p>

a|

?/p>

|(T) 

 

T

?/p>

SU 

U

?/p>

?/p>

SU|

ε

 

分析子程序的构造方?/p>

 

对满足条件的文法按如下方法构造相应的语法分析子程序?/p>

 

(1) 

对于每个非终结号

U

,编写一个相应的子程?/p>

P(U)

?/p>

 

(2) 

对于规则

U::=x1|x2|..|xn,

有一个关?/p>

U

的子程序

P(U),P(U)

按如下方法构造:

 

 

 

IF CH IN FIRST(x1) THEN P(x1) 

 

 

ELSE IF CH IN FIRST(x2) THEN P(x2) 

 

 

ELSE ... 

 

 

 

 

. 

 

 

 

 

. 

 

 

 

 

. 

 

 

IF CH IN FIRST(xn) THEN P(xn) 

 

 

ELSE ERROR 

 

其中?/p>

CH

存放当前的输入符号,是一个全程变量;

ERROR

是一段处理出错信息的程序?/p>

 

 

P(xj)

为相应的子程序?/p>

 

(3) 

对于符号?/p>

x=y1y2...yn;p(x)

的含义为?/p>

 

 

 

BEGIN  

 

 

 

P(y1); 

 

 

 

P(y2); 

 

 

 

... 

 

 

 

P(yn); 

 

 

END 

 

如果

yi

是非终结符,?/p>

P(yi)

代表调用处理

yi

的子程序?/p>

 

 

如果

yi

是终结符,则

P(yi)

为形如下述语句的一段子程序

 

 

 

IF CH=yi THEN READ(CH) ELSE ERROR 

 

即如果当前文法中的符号与输入符号匹配,则继续读入下一个待输入符号?/p>

CH

中,

 

 

否则表明出错?/p>

 

(4) 

如果文法中有空规?/p>

U::=EPSILON,

则算法中的语?/p>

 

 

 

IF CH IN FIRST(xn) THEN P(xn) 

Ͼλ
新建
上传
首页
助手
最?/div>
资料?/div>
工具

编译原理习题解答

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

?/p>

1/1 

第五?/p>

 

自顶向下语法分析方法

 

1

.对文法

G[S] 

 

S

?/p>

a|

?/p>

|(T) 

 

T

?/p>

T,S|S 

(1)

 

给出

(a,(a,a))

?/p>

(((a,a),

?/p>

,(a)),a)

的最左推导?/p>

 

(2)

 

对文?/p>

G

,进行改写,然后对每个非终结符写出不带回溯的递归子程序?/p>

 

(3)

 

经改写后的文法是否是

LL(1)

的?给出它的预测分析表?/p>

 

(4)

 

给出输入?/p>

(a,a)#

的分析过程,并说明该串是否为

G

的句子?/p>

 

解:

 

(1) (a,(a,a))

的最左推导为

S

?/p>

(T)

?/p>

(T,S)

?/p>

(S,S)

?/p>

(a,(T))

?/p>

(a,(T,S))

?/p>

(a,(S,a))

?/p>

(a,(a,a)) 

(((a,a),

?/p>

,(a)),a)

的最左推导为

 

 

S

?/p>

(T)

?/p>

(T,S)

?/p>

(S,a)

?/p>

((T),a)

?/p>

((T,S),a)

?/p>

((T,S,S),a)

?/p>

((S,

?/p>

,(T)),a)

?/p>

(((T),

?/p>

,(S)),a) 

 

 

?/p>

(((T,S),

?/p>

,(a)),a)

?/p>

(((S,a),

?/p>

,(a)),a)

?/p>

(((a,a),

?/p>

,(a)),a) 

(2)

由于?/p>

T

?/p>

T,S

的产生式,所以消除该产生式的左递归,增中一个非终结?/p>

U

有新的文?/p>

G

/

[S]: 

 

S

?/p>

a|

?/p>

|(T) 

 

T

?/p>

SU 

U

?/p>

?/p>

SU|

ε

 

分析子程序的构造方?/p>

 

对满足条件的文法按如下方法构造相应的语法分析子程序?/p>

 

(1) 

对于每个非终结号

U

,编写一个相应的子程?/p>

P(U)

?/p>

 

(2) 

对于规则

U::=x1|x2|..|xn,

有一个关?/p>

U

的子程序

P(U),P(U)

按如下方法构造:

 

 

 

IF CH IN FIRST(x1) THEN P(x1) 

 

 

ELSE IF CH IN FIRST(x2) THEN P(x2) 

 

 

ELSE ... 

 

 

 

 

. 

 

 

 

 

. 

 

 

 

 

. 

 

 

IF CH IN FIRST(xn) THEN P(xn) 

 

 

ELSE ERROR 

 

其中?/p>

CH

存放当前的输入符号,是一个全程变量;

ERROR

是一段处理出错信息的程序?/p>

 

 

P(xj)

为相应的子程序?/p>

 

(3) 

对于符号?/p>

x=y1y2...yn;p(x)

的含义为?/p>

 

 

 

BEGIN  

 

 

 

P(y1); 

 

 

 

P(y2); 

 

 

 

... 

 

 

 

P(yn); 

 

 

END 

 

如果

yi

是非终结符,?/p>

P(yi)

代表调用处理

yi

的子程序?/p>

 

 

如果

yi

是终结符,则

P(yi)

为形如下述语句的一段子程序

 

 

 

IF CH=yi THEN READ(CH) ELSE ERROR 

 

即如果当前文法中的符号与输入符号匹配,则继续读入下一个待输入符号?/p>

CH

中,

 

 

否则表明出错?/p>

 

(4) 

如果文法中有空规?/p>

U::=EPSILON,

则算法中的语?/p>

 

 

 

IF CH IN FIRST(xn) THEN P(xn) 

">
新建
上传
首页
助手
最?/div>
资料?/div>
工具

编译原理习题解答

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

?/p>

1/1 

第五?/p>

 

自顶向下语法分析方法

 

1

.对文法

G[S] 

 

S

?/p>

a|

?/p>

|(T) 

 

T

?/p>

T,S|S 

(1)

 

给出

(a,(a,a))

?/p>

(((a,a),

?/p>

,(a)),a)

的最左推导?/p>

 

(2)

 

对文?/p>

G

,进行改写,然后对每个非终结符写出不带回溯的递归子程序?/p>

 

(3)

 

经改写后的文法是否是

LL(1)

的?给出它的预测分析表?/p>

 

(4)

 

给出输入?/p>

(a,a)#

的分析过程,并说明该串是否为

G

的句子?/p>

 

解:

 

(1) (a,(a,a))

的最左推导为

S

?/p>

(T)

?/p>

(T,S)

?/p>

(S,S)

?/p>

(a,(T))

?/p>

(a,(T,S))

?/p>

(a,(S,a))

?/p>

(a,(a,a)) 

(((a,a),

?/p>

,(a)),a)

的最左推导为

 

 

S

?/p>

(T)

?/p>

(T,S)

?/p>

(S,a)

?/p>

((T),a)

?/p>

((T,S),a)

?/p>

((T,S,S),a)

?/p>

((S,

?/p>

,(T)),a)

?/p>

(((T),

?/p>

,(S)),a) 

 

 

?/p>

(((T,S),

?/p>

,(a)),a)

?/p>

(((S,a),

?/p>

,(a)),a)

?/p>

(((a,a),

?/p>

,(a)),a) 

(2)

由于?/p>

T

?/p>

T,S

的产生式,所以消除该产生式的左递归,增中一个非终结?/p>

U

有新的文?/p>

G

/

[S]: 

 

S

?/p>

a|

?/p>

|(T) 

 

T

?/p>

SU 

U

?/p>

?/p>

SU|

ε

 

分析子程序的构造方?/p>

 

对满足条件的文法按如下方法构造相应的语法分析子程序?/p>

 

(1) 

对于每个非终结号

U

,编写一个相应的子程?/p>

P(U)

?/p>

 

(2) 

对于规则

U::=x1|x2|..|xn,

有一个关?/p>

U

的子程序

P(U),P(U)

按如下方法构造:

 

 

 

IF CH IN FIRST(x1) THEN P(x1) 

 

 

ELSE IF CH IN FIRST(x2) THEN P(x2) 

 

 

ELSE ... 

 

 

 

 

. 

 

 

 

 

. 

 

 

 

 

. 

 

 

IF CH IN FIRST(xn) THEN P(xn) 

 

 

ELSE ERROR 

 

其中?/p>

CH

存放当前的输入符号,是一个全程变量;

ERROR

是一段处理出错信息的程序?/p>

 

 

P(xj)

为相应的子程序?/p>

 

(3) 

对于符号?/p>

x=y1y2...yn;p(x)

的含义为?/p>

 

 

 

BEGIN  

 

 

 

P(y1); 

 

 

 

P(y2); 

 

 

 

... 

 

 

 

P(yn); 

 

 

END 

 

如果

yi

是非终结符,?/p>

P(yi)

代表调用处理

yi

的子程序?/p>

 

 

如果

yi

是终结符,则

P(yi)

为形如下述语句的一段子程序

 

 

 

IF CH=yi THEN READ(CH) ELSE ERROR 

 

即如果当前文法中的符号与输入符号匹配,则继续读入下一个待输入符号?/p>

CH

中,

 

 

否则表明出错?/p>

 

(4) 

如果文法中有空规?/p>

U::=EPSILON,

则算法中的语?/p>

 

 

 

IF CH IN FIRST(xn) THEN P(xn) 

Ͼλ">
Ͼλ
Ŀ

编译原理第五?作业参考答?- 百度文库
新建
上传
首页
助手
最?/div>
资料?/div>
工具

编译原理习题解答

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

?/p>

1/1 

第五?/p>

 

自顶向下语法分析方法

 

1

.对文法

G[S] 

 

S

?/p>

a|

?/p>

|(T) 

 

T

?/p>

T,S|S 

(1)

 

给出

(a,(a,a))

?/p>

(((a,a),

?/p>

,(a)),a)

的最左推导?/p>

 

(2)

 

对文?/p>

G

,进行改写,然后对每个非终结符写出不带回溯的递归子程序?/p>

 

(3)

 

经改写后的文法是否是

LL(1)

的?给出它的预测分析表?/p>

 

(4)

 

给出输入?/p>

(a,a)#

的分析过程,并说明该串是否为

G

的句子?/p>

 

解:

 

(1) (a,(a,a))

的最左推导为

S

?/p>

(T)

?/p>

(T,S)

?/p>

(S,S)

?/p>

(a,(T))

?/p>

(a,(T,S))

?/p>

(a,(S,a))

?/p>

(a,(a,a)) 

(((a,a),

?/p>

,(a)),a)

的最左推导为

 

 

S

?/p>

(T)

?/p>

(T,S)

?/p>

(S,a)

?/p>

((T),a)

?/p>

((T,S),a)

?/p>

((T,S,S),a)

?/p>

((S,

?/p>

,(T)),a)

?/p>

(((T),

?/p>

,(S)),a) 

 

 

?/p>

(((T,S),

?/p>

,(a)),a)

?/p>

(((S,a),

?/p>

,(a)),a)

?/p>

(((a,a),

?/p>

,(a)),a) 

(2)

由于?/p>

T

?/p>

T,S

的产生式,所以消除该产生式的左递归,增中一个非终结?/p>

U

有新的文?/p>

G

/

[S]: 

 

S

?/p>

a|

?/p>

|(T) 

 

T

?/p>

SU 

U

?/p>

?/p>

SU|

ε

 

分析子程序的构造方?/p>

 

对满足条件的文法按如下方法构造相应的语法分析子程序?/p>

 

(1) 

对于每个非终结号

U

,编写一个相应的子程?/p>

P(U)

?/p>

 

(2) 

对于规则

U::=x1|x2|..|xn,

有一个关?/p>

U

的子程序

P(U),P(U)

按如下方法构造:

 

 

 

IF CH IN FIRST(x1) THEN P(x1) 

 

 

ELSE IF CH IN FIRST(x2) THEN P(x2) 

 

 

ELSE ... 

 

 

 

 

. 

 

 

 

 

. 

 

 

 

 

. 

 

 

IF CH IN FIRST(xn) THEN P(xn) 

 

 

ELSE ERROR 

 

其中?/p>

CH

存放当前的输入符号,是一个全程变量;

ERROR

是一段处理出错信息的程序?/p>

 

 

P(xj)

为相应的子程序?/p>

 

(3) 

对于符号?/p>

x=y1y2...yn;p(x)

的含义为?/p>

 

 

 

BEGIN  

 

 

 

P(y1); 

 

 

 

P(y2); 

 

 

 

... 

 

 

 

P(yn); 

 

 

END 

 

如果

yi

是非终结符,?/p>

P(yi)

代表调用处理

yi

的子程序?/p>

 

 

如果

yi

是终结符,则

P(yi)

为形如下述语句的一段子程序

 

 

 

IF CH=yi THEN READ(CH) ELSE ERROR 

 

即如果当前文法中的符号与输入符号匹配,则继续读入下一个待输入符号?/p>

CH

中,

 

 

否则表明出错?/p>

 

(4) 

如果文法中有空规?/p>

U::=EPSILON,

则算法中的语?/p>

 

 

 

IF CH IN FIRST(xn) THEN P(xn) 



ļ׺.doc޸Ϊ.docĶ

  • ѧγָ()
  • ѧϰ
  • ж
  • רߵѧϰ()
  • JAVAĩ⼰
  • ΢εĿӦÿ⿪ⱨ
  • ϵͳ̵籣ʵ
  • ˽̰꼶ϲѧ15.3 2ʱ ʽ̵Ӧ1̰
  • -Ű-κϰ(ȫ)
  • 2012-2013ѧѧо꼶()Ӣ(B) 2

վ

԰ Ͼλ
ϵͷ779662525#qq.com(#滻Ϊ@)