主题:有关文法的几个老问题,请高手帮忙!
有关文法的几个老问题,请高手帮忙!
假设某程序语言的文法如下:
S→a | b | (T)
T→TdS | S
其中,VT={a,b,d,(,)},VN={S,T},S是开始符号。
考查该文法,称句型(Sd(T)db)是S的一个A 。其中B是句柄;C是素短语;D是该句型的直接短语;E是短语。
A: ①最左推导 ②最右推导 ③规范推导 ④推导
B: ①S ②b ③(T) ④Sd(T)
C: ①S ②b ③(T) ④Sd(T)
D: ①S ②S,(T),b ③S,(T),TdS,b ④(Sd(T)db)
E: ①(Sd(T)db) ②d(T) ③Td ④Sd(T)d
其中:vt={a,b,d,(,)};vn={s,t};s是开始符号,求句型(sd(t)db)是s的一个 推导 ,其中 s 是句柄, (t) 是最左素短语(问题一:素短语又是什么?)
直接短语:s、(t)、b (问题二:TdS为什么不是直接短语?)
短语:(sd(t)db)、sd(t)db、sd(t)、(t)、s、b (问题三:a为什么不是短语?)
再说明一点,这个推导不是最右推导。
此句型的语法树如下所示:
S
(T)
(T d S)
(T d S b) [color=FF0000](为什么不是TdSdb)?[/color]
(S (T)) [color=FF0000](为什么不是Sd(T)db)?)[/color]
从语法树我们可以看出,短语就是位于同一个非终端结点的所有叶子结点,比如S、Sd(T)、Sd(T)db就是是相对于T的短语,b、(T)、(Sd(T)db)是相对于S的短语。而直接短语则进一步要求这些叶子结点的非终端结点是它们的直接父结点。因此可以S、(T)、b都是该句型的直接短语。语法树上最左的直接短语就是句柄,本题中是S。
[color=FF0000]
问题一:素短语又是什么?怎么判断的?
问题二:TdS为什么不是直接短语?
问题三:a为什么不是短语?)
问题四:语法树到底怎么写的?看这题的语法树似乎不全??[/color]
几个问题,希望高手帮助,谢谢!
假设某程序语言的文法如下:
S→a | b | (T)
T→TdS | S
其中,VT={a,b,d,(,)},VN={S,T},S是开始符号。
考查该文法,称句型(Sd(T)db)是S的一个A 。其中B是句柄;C是素短语;D是该句型的直接短语;E是短语。
A: ①最左推导 ②最右推导 ③规范推导 ④推导
B: ①S ②b ③(T) ④Sd(T)
C: ①S ②b ③(T) ④Sd(T)
D: ①S ②S,(T),b ③S,(T),TdS,b ④(Sd(T)db)
E: ①(Sd(T)db) ②d(T) ③Td ④Sd(T)d
其中:vt={a,b,d,(,)};vn={s,t};s是开始符号,求句型(sd(t)db)是s的一个 推导 ,其中 s 是句柄, (t) 是最左素短语(问题一:素短语又是什么?)
直接短语:s、(t)、b (问题二:TdS为什么不是直接短语?)
短语:(sd(t)db)、sd(t)db、sd(t)、(t)、s、b (问题三:a为什么不是短语?)
再说明一点,这个推导不是最右推导。
此句型的语法树如下所示:
S
(T)
(T d S)
(T d S b) [color=FF0000](为什么不是TdSdb)?[/color]
(S (T)) [color=FF0000](为什么不是Sd(T)db)?)[/color]
从语法树我们可以看出,短语就是位于同一个非终端结点的所有叶子结点,比如S、Sd(T)、Sd(T)db就是是相对于T的短语,b、(T)、(Sd(T)db)是相对于S的短语。而直接短语则进一步要求这些叶子结点的非终端结点是它们的直接父结点。因此可以S、(T)、b都是该句型的直接短语。语法树上最左的直接短语就是句柄,本题中是S。
[color=FF0000]
问题一:素短语又是什么?怎么判断的?
问题二:TdS为什么不是直接短语?
问题三:a为什么不是短语?)
问题四:语法树到底怎么写的?看这题的语法树似乎不全??[/color]
几个问题,希望高手帮助,谢谢!