1、9.2.2 根据语法结构产生式的特点来判断语法结构的类型根据下面的表格就可以判断语法结构的类型。语法的类型类型对于产生式的限制w1w2123没有任何限制w1的长度小于等于w2长度,或者w2=w1=A,A是非终止符。S,或者w1=A并且w2=aB或者w2=a,其中A,B是非终止符。例9.2.4 设语法是G=(V,T,S,P),其中,V=0,1,S,A,T=0,1,S是初始符,产生式为S0S1A;S;A1A;11A0。则这个语法是0型语法。例9.2.5 设语法是G=(V,T,S,P),其中V=0,1,2,S,A,B,T=0,1,2,初始状态是S,产生式是S0SAB,S,BAAB,0A01,1A11
2、,1B12,2B22。则这个语法是上下文有关的语法(1型语法)。例9.2.6 设语法是G=(V,T,S,P),其中,V=0,1,S,T=0,1,S是初始符,产生式为S0S1;S。则这个语法是上下文无关的语法(2型语法)。例9.2.7 设语法是G=(V,T,S,P),其中,V=S,A,0,1,终止符集合T=0,1,产生式为S0S,S1A,S1,A1A,A1和S。则这个语法是正则语法(3型语法)。9.2.3 求演绎树以及判断一个词是否属于一个语法产生的语言一个由上下文无关语法产生语言的演绎可以用一个有序的根树来表示,一个这样的演绎就对应一个有跟树。例9.2.8 给出书中例子中关于a hungry
3、mathematician eats wildly的演绎的演绎树。判断一个符号串是否在一个由上下文无关语法产生的语言中,我们有两种解决办法。第一种方法是自顶向下分析,从S开始,试图使用一系列的产生式来演绎出要判断的词;第二种方法称为自底向上的分析,在这种方法中,过程正好相反。例9.2.9 判断词cbab是否属于由语法G=(V,T,S,P)产生的语言,其中V=a,b,c,A,B,C,S,T=a,b,c,S是初始符号,产生式为SAB,ACa,BBa,BCb,Bb,Ccb,Cb第一种方法,因为只有一个产生式的左端是S,所以必须从SAB开始,接着使用唯一的一个左端是A的产生式,即ACa,得到SABCa
4、B,因为cbab以字符cb开头,所以我们要使用产生式Ccb。这样我们得到SABCaBcbaB,最后使用产生式Bb,得到SABCaBcbaBcbab。第二种方法,因为cbab是要被演绎的符号串,我们可以用产生式Ccb,有Cabcbab,然后我们使用产生式ACa,有AbCabcbab,使用产生式Bb,有ABAbCabcbab,最后,使用SAB得到了关于cbab的演绎:SABAbCabcbab。9.2.4 求2型语法的Backus-Naur formBackus-Naur form用来描述很多计算机语言的规则,包括Java。在2型语法的产生式中左边都有单个的一个非终止符。我们不把所有的产生式都分别列
5、举出来,而是把左边有同样的非终止符的产生式结合成一个短语,在产生式中不再使用符号,而是使用:=,把所有的非终止符放在括弧里,并且把产生式的所有右端都放在一个短语里,用一个竖线隔开。例9.2.10 给出十进制整数的产生式的Backus-Naur form。Backus-Naur form如下:=非负整数=+|-数字|0。 (5)L(G)=abba,aabbba,aabbbbaa,.,n个a后跟n个b,在后跟m个b以及m个a,其中, m,n5. 说明例9.1.5中给出的语法产生的集合是0n1n|n=0,1,2。略。6. 用例9.1.5中给出的语法构造0313的演绎。S0S100S11000S111
6、0001117. 构造能产生下列集合的语法结构:(1). 012n|n=0,1,2。G=(V,T,S,P),V=S,A,0,1,T=0,1,S是初始符,P=S0A,A,A11A.(2). 0n12n|n=0,1,2。V=S,0,1,P= S,S0A11,A,A0A11.(3). 0n1m0n |n,m=0,1,2.V=S,A,B,0,1,P= S,S0A0,A0A0,A1B,A,B1B, B.8. 构造习题1中句子的演绎树。(1) 解: (2)(3)(4)9. a).如果产生式的Backus-Naur form如下,那么语法中的产生式是什么?表达式 :=()|+*=x|y b).给出这个语法中
7、(x*y)+x的演绎树。(a)产生式为:表达式表达式表达式表达式+表达式表达式表达式*表达式表达式变量变量x变量y(b)9.3.2习题9.2解答1. 画出下面状态表所代表的有限状态机的状态图。s3s1 s0s2 s0 s0 s3s1 s20 01 1s0 s2s1 s1s4s0 s4状态图分别为:2. 对于例9.2.2中给定的有限状态机,确定在下列输入的情况下的输出。.010*a). 1100 b).00110110 c).111111111113. 构造一个有限状态机,它把输入延迟2个字节,输出的头两位是00。4. 构造一个密码锁的有限状态机,它有从1到40的数字,当输入是10右,8 两次左,37右的时候,它就被打开。输入是一个三元组。解: 密码锁的状态表下一个状态(10,右,1) (8,左,2) (37,右,1) 其它输入 (10,右,1) (8,左,2) (37,右,1) 其它输入s1 s4 s4 s4 s4 s2 s4 s4 s4 s4 s3 s4 s3 s3 s3 s3 s4 s4 s4 s4 n n n n n n y ny y y yn n n n5. 构造一个收费机的有限状态机,它可以接收5分,10分,25分的硬币,只要投入的硬币一共是25分或25分以上,它的门就打开,但不找零钱,超出25分的部分也不留给下一个司机。状
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1