发表日期: 2021-04-17 12:57:44 浏览次数:116
三河微信公众号开发【三河网络推广】三河建站、三河网站维护、三河网页制作、三河微信小程序代运营公司
三河古镇,古名鹊渚、鹊尾(渚)、鹊岸,是中国历史文化名镇,国家AAAAA级旅游景区,位于安徽省合肥市肥西县南端,地处肥西、庐江、舒城交界处,古镇总面积2.9平方公里。 [1-2]
三河古镇原是巢湖中的高洲,因泥沙淤积,渐成陆地。南北朝后期称三汊河,明、清置三河镇。 [2]
三河古镇有丰乐河、杭埠河、小南河在境内汇合,经新河向东流约15公里入巢湖。镇内有古城墙、古炮台、太平军指挥部旧址、英王府、一人巷、万年台、李府粮仓、鹤庐、刘同兴隆庄等历史遗迹,是庐剧的发源地,古镇有米饺、牛皮糖、酥糖、麦芽糖、茶干、米酒等特产。 [3]
为表达对全体医护人员的敬意和感谢,自疫情结束恢复运营之日起至2020年12月31日,三河古镇景区所有收费景区将面向全国医护工作者实行免费游览政策。
2. 如果Xi 是语法分类,就可以选择任何一个已知在L(Xi )中的字符串作为si 。如果若干个Xi 是相同的语法分类,就可以从各次出现的L(Xi )中分别选不同的字符串作为si 。
那么所选的这些字符串的串接s1s2…sn就是语言L(<S>)中的字符串。请注意,如果n=0,就把ε放到该语言中。
实现这一定义的一种系统化方法是经过该文法各产生式若干轮。在每轮中,我们要以所有可能的方式利用归纳规则更新各语法分类的语言。也就是说,对各个属于语法分类的Xi,要以所有可能的方式从L(Xi )中选出字符串。
考虑一种由示例11.3介绍的与某几种C语言语句对应的文法中的一些产生式组成的文法。简单起见,我们只会用到对应while
语句、程序块和简单语句的产生式,以及对应语句列的两个产生式。此外,还要使用简略表示法来合理压缩这些字符串的长度。简略表示用到了终结符w
(while)、c
(带括号的条件)和s
(简单语句)。该文法使用语法分类<S>表示语句,并使用语法分类<L>表示语句列。该文法的产生式如图11-6所示。
(1) <S> → w c<S>
(2) <S> → { <L> }
(3) <S> → s;
(4) <L> → <L><S>
(5) <L> → ε
图 11-6 简化过的表示语句的文法
设L 是语法分类<L>中字符串的语言,并设S 是语法分类<S>中字符串的语言。一开始,根据依据规则,L 和S 都为空。在第一轮中,只有产生式(3)和产生式(5)是有用的,因为其他产生式的右部都含有语法分类,而此时对应这些语法分类的语言中还没有任何字符串。产生式(3)表明了s;
是语言S 中的字符串,而产生式(5)则告诉我们ε 在语言L 中。
第二轮开始时,有L={ε }和S={s;
}。产生式(1)现在让我们可以把wcs;
添加到S 中,因为s;
已经在S 中了。也就是说,在产生式(1)的右部中,终结符w
和c
只能代表它们本身,语法分类<S>则可以被替换为语言S 中的任意字符串。因为目前s;
是S 中唯一的字符串,所以我们只能作出这一个选择,而这一选择的结果就是wcs;
。
产生式(2)添加了字符串{}
,因为终结符{
和}
只能代表它们自身,不过语法分类<L>可以代表语言L 中的任意字符串,而此刻L 中只含有ε。
因为产生式(3)的右部只由终结符构成,所以它决不会产生除s;
之外的字符串,因此从现在开始就可以忘掉该产生式了。同样,产生式(5)也不会产生除ε 之外的字符串,所以在本轮及以后的轮次中也可以忽略它。
最后,当我们用ε 代替<L>并用s;
代替<S>之后,产生式(4)就为L 产生了字符串s;
。在第二轮结束的时候,语言S={**s;wcs;,{}**
},而语言L={ε;s;
}。
在下一轮中,可以使用产生式(1)、(2)和(4)产生新的字符串。产生式(1)中替换<S>的选择有3种,分别是s;
、wcs;
和{}
。用s;
替换后得到的字符串是语言S 中已经具有的,不过替换了另两个字符串后得到的是新字符串wcwcs;
和wc{}
。
对产生式(2)而言,可以用ε 或s;
替换<L>,为语言S 得出旧字符串{}
和新字符串{s;}
。在产生式(4)中,可以用ε 或s;
替换<L>,并用s;
、wcs;
或{}
替换<S>,这给语言L带来了一个旧字符串s;
,以及5个新字符串wcs;
、{}
、s;s;
、s;wcs;
和s;{}
。1
1我们非常关心用字符串替换语法分类的方式。假设经过每一轮替换,语言L和S都和它们在上一轮结束时的定义保持不变。每个产生式的右部都要进行替换。这些右部可以为左部的语法分类产生新的字符串,不过在同一轮替换中,我们不会在一个产生式的右部使用由另一个产生式新构建的字符串。但这也没关系,所有要生成的字符串最终都会在某一轮中生成,不管我们是立即在右部中循环使用新字符串,还是等待在下一轮中再使用新字符串。
这样语言就成了S={s;,wcs;,{},wcwcs;,wc{},{s;}
}和L={ε ,s;,wcs;,{},s;s;,s;wcs;,s;{}
}。我们可以按照自己的意愿继续这一过程。图11-7总结了前3轮的情况。
| S | L |
---|---|---|
Round 1: |
| ε |
Round 2: |
|
|
Round 3: |
|
|
图 11-7 前3轮每轮产生的新字符串
正如示例11.4中那样,由文法定义的语言可能是无限的。如果语言是无限的,我们就不能一一列出所有字符串。能做到的最佳做法就是按轮次枚举这些字符串,就像示例11.4中一开始所做的那样。该语言中的任何字符串都将在某轮出现,不过在任何一轮都不可能产生出所有的字符串。可以被放进语法分类<S>的语言中的那些字符串组成的集合,就形成了(无限)语言L(<S>)。
1. 在示例11.4中,第四轮添加的新字符串都有哪些?
2. * 在示例11.4的第i 轮替换中,为各语法分类产生的新字符串中最短的字符串各是什么?为下列语法分类产生的最长新字符串又分别是什么?
(a) <S>
(b) <L>?
3. 分别使用下列图中的文法按轮次生成平衡括号串。
(a) 图11-3
(b) 图11-4
这两种文法在相同轮次中是否会生成相同的平衡括号串?
4. 假设每个以某语法分类<S>为其左部的产生式在其右部中也含有<S>,那么为什么L(<S>)为空?
5. *在如本节所描述的方式按轮次生成字符串时,为语法分类<S>生成的新字符串只可能是通过替换某有关<S>的产生式中右部的语法分类得到,满足至少有一个被替换的字符串是在上一轮中新发现的。解释一下为什么楷体标记的条件是正确的。
6. ** 假设我们想分辨某个特定的字符串s 是否在某语法分类<S>的语言中。
(a) 解释一下,为什么如果在某轮中所有为任意语法分类生成的新字符串都比s 长,而且s尚未为L(<S>)生成,s 就不可能被放入L(<S>)中。提示:利用习题(5)。
(b) 解释一下,为什么在有限轮次的替换后,一定没法继续生成不长于s 的新字符串。
(c) 使用(a)和(b)的结论设计一种算法,接受某文法、该文法的一种语法分类<S>,以及某个终结符串s,并分辨出s是否在L(<S>)中。
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: https://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878