文法G及相应的翻译方案如下: S→bTc {print"1"} S→a {print"2"} T→R {print&qu
文法G及相应的翻译方案如下:
S→bTc {print"1"}
S→a {print"2"}
T→R {print"3"}
R→R/S {print"4"}
R→S {print"5"}
该文法属于乔姆斯基2型文法。$符号串bR/bTc/bSc/ac是该文法的一个句型,可以从文法起始符号出发推导出该句型,推导过程如图6-1所示。
$该句型的短语有:
bR/bTc/bSc/ac、R/bTc/bSc/a、R/bTc/bSc、R,bTc、bTc、bSc、S、a
素短语有:bTc、bSc、a
句柄为:bTc$求解该文法的FIRSTVT和LASTVT集合为:
FIRSTVT(S)={a,b}LASTVT(S)={a,c}
FIRSTVT(T)={a,b,/}LASTVT(T)={a,C,/}
FIRSTVT(R)={a,b,/}LASTVT(R)={a,C,/}
构造该文法的算符优先关系表,如表6-1所示。
表6-1 构造文法的算符优先关系表 | |||||
a | b | c | / | # | |
a | > | > | > | ||
b | < | < | < | > | |
c | > | > | > | ||
/ | < | < | > | > | > |
# | < | < | < | < |
该文法是算符优先文法,因为该文法的算符优先关系表中不含重定义。$该文法经消除左递归后得到的等价文法G、为:
S→bTc|a
T→R
R→SR、
R、→/SR、|ε
求解文法G的FIRST和FOLLOW集合为:
FIRST(S)={a,b} FOLLOW(S)={#,/,C}
FIRST(T)={a,b} FOLLOW(T)={c}
FIRST(R)={a,b} FOLLOW(R)={c}
FIRST(R、)={/,ε} FOLLOW(W)={c}对于规则S→bTc|a,满足FIRST(bTc)∩FIRST(a)=Ф对于规则R、→/SR、|ε,FIRST(/SR、)FOLLOW(W)=Ф该文法满足LL(1)文法的充要条件,所以文法G、是LL(1)文法。$文法G是SLR(1)文法。因为构造出该文法识别活前缀的有限自动机后,可知对于此法可能出现冲突的是,项目T→R·和R→R·/S同时出现在一个状态中,而此时FOLLOW(T)={c)与{/}不相交,所以不会有冲突产生。$对于题(2)的输入符号串,该翻译方案的输出是:1453142431