语法分析习题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

a <
(2)若有…Pa…,,则任 何b ∈LastVT(P) 有b>a

( ) a + #
< > > <
< > > <
<
> >
< >
>
>
<
>
FirstVT
LastVT
S
; √ √
( )
a √

# S
; √
( )
a

#
√ √
D H T
√ √ √ √
√ √ √ √
D H T
; >
√ ( <
√ √ √ √ √ √


S → S ;D | D H→a|(S)
D→D(T)|H T→T+S|S

LastVT(P): (1)若P->…a|P-> … aQ,则a∈LastVT(P) (2)若P-> … Q,则LastVT(Q) LastVT(P)

+
LastVT(S)={;LastVT(D)} LastVT(H)={a,)} S D H T ; √ ( ) √ √ √ √
1、消除下列文法的左递归性
(1)S->SA|A A->SB|B|(S)|() (2) S->AS|b A->SA|a (3) S->(T)|a| T->S|T,S

B->[S]|[]
设已给文法: S->AbB|d A->Cab|Bf B->CSd|d C->ed|a 写出对符号串eddfbbd进行带回溯的自顶向下 语法分析过程
(2)若有…Pa…,,则任 何b ∈LastVT(P) 有b>a

( ) a + #
< > > <
< > > <
<
< >
>
>
<
>
LastVT
S → S ;D | D D→D(T)|H H→a|(S) T→T+S|S
S
; √
( )
a

#
√ √
D H T
; >
√ ( <
√ √ √ √ √ √
) >
=
√ + > #

#
D H T
√ √ √ √
; ( < )
√ √ √ √
a < + #

( ) a + #
<
<
<
<
<
<
<
LastVT
S → S ;D | D D→D(T)|H H→a|(S) T→T+S|S
S
; √
( )
a

#
√ √
D H T
; >
√ ( <
√ √ √ √ √ √
) > > > a <
√ + >ቤተ መጻሕፍቲ ባይዱ#
S → S ;D | D H→a|(S)
D→D(T)|H T→T+S|S

FirstVT(P): (1)若P->a…|P->Qa…,则a∈FirstVT(P) (2)若P->Q…,则FirstVT(Q) FirstVT(P) FirstVT(S)={;FirstVT(D)} FirstVT(H)={a,(} S D H T ; √ ( √ √ √ √ ) FirstVT(D)={(,FirstVT(H)} FirstVT(T)={+,FistVT(S)} a √ √ √ √ + #

写出文法的First集合和Follow集合,验证是否 为LL(1)文法 S->aAB|bA| A->aAB| B->bB|

利用分析表判断下列文法是否为LL(1)文法 S->AB|CDa A->ab|c B->dE C->eC| D->fD|f E->dE|



已知文法G(S): S→SaA|bB A→aB|c B→Bb|d 要求: 消除G(S) 中的左递归,从而构造一个等价的文法 G’(S) , 构造G’(S) 的预测分析表,判定G’(S) 是否为LL(1) 文法。





设有下列翻译方案, SPS {print“1”} SPQ {print“2”} Pa {print“3”} QbR {print“4”} QdQ {print“5”} Rc {print“6”} 其中语义规则print“i” 意为打印输出 i 。 设入串为a a a d b c # , 要求: 写出对输入串的规范归约过程并画出语法树。 给出自底向上翻译输出的结果。
) > = > > a <
√ + > # > > > =
(1)若有…aP…,,则任 何b ∈FirstVT(P) 有a<b (2)若有…Pa…,,则任 何b ∈LastVT(P) 有b>a

( ) a + #
< > > < <
< > > < <


< <
< > > >
输入串 (a+a)# # #( a+ a ) # #(a +a)# #(H +a)# #(H+ a)# #(H+a ) # #(H+H )# #(T )# #(T) #
S S P P a P a Q S
a
d
Q
b
R
C



已知文法G(S) : S → S ;D | D D→D(T)|H H→a|(S) T→T+S|S 要求: 构造算符优先关系表,并证明G(S) 为算符优先文法。 (2)详细描述对输入串 ( a + a ) 的算符优先分析过程,并 用规范推导证明这个输入串不是G(S) 的句子。 (3)根据(2)的结果,对比规范归约,讨论算符优先分析 法中存在的问题。

S->Sb|Ab|b A->Aa|a 把上述文法改造成LL(1)文法,并构造新文法 的分析表






对于下面程序段 … Var a:integer; Procedure S(X); Var X:integer; Begin a:=a+1; X:=a+X End; Begin a:=5; S(a); Print(a) End. 试问:若参数传递方式分别采取传名和传值时,程序执行后输出a的值 是什么?

0
0
0
ε
X 0
ε
1
ε
3
ε
Y
0 1
2
NFA
0
0
0
X
ε
0
ε
1
1
ε
0
3
ε
Y
2
NFA
0 0
1, 2, 4 3
1
简化的 DFA
LastVT(D)={), LastVT(H)} LastVT(T)={+,LastVT(S)} a √ √ √ √ #


FirstVT
S → S ;D | D D→D(T)|H H→a|(S) T→T+S|S
(1)若有…aP…,,则任 何b ∈FirstVT(P) 有a<b
S
; √ √
( )
a √
#H #

判定条件 #<( (<a (<a>+ (<+ +<a +<a>) (<+>) ( = ) #<( ,)> # #S#
动作
移进 移进 归约H→a 移进 移进 归约H→a 归约T→T+S 移进 归约H→(S) 接受
1、已知正规式 R = 0*(0 | 10)*0* ,试求识 别 L(R) 的确定有限自动机 DFA 。 要求写出构造 NFA 、DFA 以及化简 DFA 的 过程。(无解题过程者不得分)
相关文档
最新文档