> # = < < < I
> > ( = < < < )
> >
化简后的文法是简单优先文法;
解: S A / A S > > A = < = < = /
> > a > >
A和/之间同时有关系=和<,所以不是简单优先文法;
提示:分析教材中给出的算法,选择一种合适的表示给定文法的方法(尽量简单),使得对文法的输入比较简单的同时(需要把输入转化为计算机语言表示,这种转化应该尽量简单),能够比较简单地构造3个基本关系矩阵(=,LEAD和LAST)。
证明:设xjxj+1...xi是满足条件xj-1 解:为描述方便,用符号表示各非终结符:D=<变量说明>,L=<变量表>, V= <变量>,T=<类型>,a=VAR,则消去V,并采用分层法改写文法,得到:D→aW:T;W→LL→L,i|iT→r|n|b|c 其全部简单优先关系是: D W T L a : ; , i r|n|b|c D W = T = L > = a = < < : = < ; , > > > = i r|n|b|c > 是简单优先文法。 证:设STna,我们对n用归纳法,证明a不含两个非终结符相邻情况。n=1时,STa,即S→a是文法的产生式,根据定义,它不含上述情况。设n=k时,上述结论成立,且设STkdAb,由归纳假设,A两侧必为终结符。我们再进行一步推导,得STkdAbTdub, 其中,A→u是文法中的产生式,由定义,u中不含两个非终结符相邻情况,从而dub两个非终结符相邻情况。得证。 证:由于G不是算符文法,G中至少有一个产生式,其右部含有两个非终结符相邻的情况。不失一般性,设其形为U→xABy,x,y∈V*,由于文法不含无用产生式,则必存在含有U的句型dUb,即存在推导ST*dUbTdxAByb.得证。 文法为:E→E↑A | AA→A*T | A/T | TT→T+V | T-V | VV→i | (E) 解: (1)构造算符优先矩阵: - * ( ) i # - > < > < < > < > * > < > < > < ( < < < = < ) > > > > I > > > > # < < < < (2)在(-,-)、(-,*)和(*,-)处有多重定义元素,不是算符优先文法; (3)改写方法: 将E→E-T中的减号与F→-P中的赋值运算符强制规定优先关系; 或者将F-P中的赋值运算符改为别的符号来表示; (1)证明:由设句型a =?Ua?中含a的短语不含U,即存在A,A=>*ay,则a可归约为a =?Ua?ü*?UA?=b,b是G的一个句型,这与G是算符文法矛盾,所以,a中含有a的短语必含U。 (2)的证明与(1)类似,略。 证:(1)对于a=?aU?是句型,必有ST*a(=?aU?) T+?ab?.即在归约过程中,b先于a被归约,从而,a 证:(1) 用反证法。设没有短语包含b但是不包含a,则a,b一定同时位于某个短语中,从而必使得a,b同时位于同一产生式的右部,所以a=b,与G是算符优先文法(=与<不能并存)矛盾。 (2)、(3)类似可证。 证:只要证u中不含有除自身以外的素短语。设有这样的素短语存在,即存在bx···by是素短语,其中1 提示:根据27题的结论,只要证u是句型α的短语,根据=关系的定义容易知道u是句型α的素短语。 证:与28题的不同点只是a0,an+1可以是’#’,不影响结论。 证:设不能含有素短语,则只能是含有短语(不能含有终结符号),则该短语只能含有一个非终结符号,否则不符合算符文法定义,得证。 解: (1)算符优先矩阵: + * ↑ ( ) i #