编译原理(陈火旺第三版)练习答案(10)
发布时间:2021-06-07
发布时间:2021-06-07
编译原理(陈火旺第三版)练习答案
P82-4
文法:Expr→-Expr
Expr→(Expr)|Var ExprTail ExprTail→-Expr|ε Var→id VarTail VarTail→(Expr) |ε 解答:First(Expr)={-,(,id} First(Var)={id}
First(ExprTail)={-,ε} First(VarTail) = {(,ε} Follow(Expr)={#,)} Follow(Var) = {-,#,)} Follow(ExprTail)={#,)} Follow(VarTail)={ -,#,)} 所以LL(1)分析表: Expr
-
Expr→-Expr
id
Expr→Var ExprTail
Var→id VarTail
(
Expr→(Expr)
VarTail→(Expr)
)
#
ExprTail ExprTail→-Expr Var VarTail
VarTail→ε
ExprTail→ε
VarTail→ε VarTail→ε
分析id—id((id))
分析栈 输入 所用产生式 #Expr id--id((id)) #
#ExprTail Var id--id((id)) # Expr→Var ExprTail #ExprTail VarTail id id--id((id)) # Var→id VarTail #ExprTail VarTail --id((id)) #
#ExprTail --id((id)) # VarTail→ε
#Expr- --id((id)) # ExprTail→-Expr #Expr -id((id)) #
#Expr- -id((id)) # Expr→-Expr #Expr id((id)) #
#ExprTail Var id((id)) # Expr→Var ExprTail #ExprTail VarTail id id((id)) # Var→id VarTail #ExprTail VarTail ((id)) #
#ExprTail )Expr( ((id)) # VarTail→(Expr) #ExprTail )Expr (id)) #
#ExprTail ))Expr( (id)) # Expr→(Expr) #ExprTail ))Expr id)) #
#ExprTail ))ExprTail Var id)) # Expr→Var ExprTail #ExprTail ))ExprTail VarTail id id)) # Var→id VarTail #ExprTail )) ExprTail VarTail )) #
#ExprTail )) ExprTail )) # VarTail→ε #ExprTail )) )) # ExprTail→ε #ExprTail ) ) #
#ExprTail #
# # ExprTail→ε