90 likes | 223 Views
吉林大学远程教育课件. 离散数学. ( 第五十四讲 ). 主讲人 : 杨凤杰. 学 时: 64. 0 型或者语法. 1 型或者上下文有关语法. 2 型或者上下文无关语法. 3 型或者正则语法. 图 9.1.1 语法的类型. 例 9.1.8 例 9.1. 6 中的集合 {0 m 1 n |m 和 n 是非负整数 } 是一 个正则语言,因为它可以由一 个正则语法 G 2 所产生。其中 S → 0S , S → 1A , S → 1 , A → 1A , A → 1 和 S →λ 。 例 9.1.9 例 9.1.5 中的集合
E N D
吉林大学远程教育课件 离散数学 (第五十四讲) 主讲人: 杨凤杰 学 时:64
0型或者语法 1型或者上下文有关语法 2型或者上下文无关语法 3型或者正则语法 图9.1.1 语法的类型
例9.1.8 例9.1. 6中的集合 {0m1n|m和n是非负整数}是一 个正则语言,因为它可以由一 个正则语法G2所产生。其中S→0S,S→1A,S→1,A→1A,A→1和S→λ。 例9.1.9 例9.1.5中的集合 {0n1n|n=0,1,2…}是一个上下文无关语法,因为这个语法的产生式为S→0S1和S→λ。在§9.4我们将说明它不是一个正则的语言。 例9.1.10 集合{0n1n2n |n=0,1,2…}是一个上下文有关语言,因为它是一个1型语言而不是2型语言。其中产生式是S→0SAB,S→λ,BA→AB,0A→01,1A→11,1B→12,2B→22
表9.1.1 语法的类型 类型 对于产生式的限制w1→w2 0 1 2 3 没有任何限制 w1的长度小于等于w2长度,或者w2=λ w1=A,A是非终止符。 S→λ,或者w1=A并且w2=aB或者w2=a,其中A,B是非终止符。 表9.1.1给出了区分语法类型的限制。
9.1.3演绎树 一个由上下文无关语法产生 语言的演绎可以用一个有序 的根树来表示,称为演绎树。 这个树的根代表初始符。树 的分支结点代表演绎中出现 的非终止符,树的叶结点代表演绎中出现的终止符。如果在演绎过程中使用了产生式A→w,w是一个词,那么代表A的结点把代表w中每个符号的结点做为儿子结点,顺序是从左到右。
sentence noun phrase verb phrase adjective noun article verb adverb the hungry rabbit eats quickly 图9.1.2 一个演绎树 例9.1.11 给出最前面的例 子中关于the hungry rabbit eats quickly的演绎的演绎树。 解:演绎树如下图。
判断一个符号串是否在一个 由上下文无关语法产生的语 言中,这是一个在应用中经 常遇见的问题,如构造编译 器等。在下面的例子中我们 有两种解决办法。 例9.1.12 判断词cbab是否属于由语法G=(V,T,S,P)产生的语言,其中V={a,b,c,A,B,C,S},T={a,b,c},S是初始符号,产生式为 S→AB,A→Ca,B→Ba,B→Cb,B→b,C→cb,C→b
解:第一种方法是,从S开始, 试图使用一系列的产生式来 演绎出cbab。因为只有一个产 生式的左端是S,所以必须从 SAB开始,接着使用唯一的 一个左端是A的产生式,即A→Ca, 得到SABCaB,因为cbab以 字符cb开头,所以我们要使用产生式C→cb。这样我们得到 SABCaBcbaB,最后使用产生式B→b,得到SABCaBcbaBcbab。上面这种方法我们称为自顶向下分析,因为它是从初始符号开始通过不断使用产生式进行的。
第二种方法称为自底向上的 分析,在这种方法中,过程 正好相反。因为cbab是要被 演绎的符号串,我们可以用 产生式C→cb,有Cabcbab, 然后我们使用产生式A→Ca, 有AbCabcbab,使用产生式B→b,有ABAbCabcbab,最后,使用S→AB得到了关于cbab的演绎:SABAbCabcbab。