发表日期: 2021-04-17 13:38:54 浏览次数:91
三河400电话申请开通【三河企业网站建设】三河微信公众号小程序开发运营价格、三河微信公众号APP软件客户端设计运营、三河网页页面设计公司费用、三河公司网站制作方案流程改版维护大概需要多少钱
三河古镇,古名鹊渚、鹊尾(渚)、鹊岸,是中国历史文化名镇,国家AAAAA级旅游景区,位于安徽省合肥市肥西县南端,地处肥西、庐江、舒城交界处,古镇总面积2.9平方公里。 [1-2]
三河古镇原是巢湖中的高洲,因泥沙淤积,渐成陆地。南北朝后期称三汊河,明、清置三河镇。 [2]
三河古镇有丰乐河、杭埠河、小南河在境内汇合,经新河向东流约15公里入巢湖。镇内有古城墙、古炮台、太平军指挥部旧址、英王府、一人巷、万年台、李府粮仓、鹤庐、刘同兴隆庄等历史遗迹,是庐剧的发源地,古镇有米饺、牛皮糖、酥糖、麦芽糖、茶干、米酒等特产。 [3]
为表达对全体医护人员的敬意和感谢,自疫情结束恢复运营之日起至2020年12月31日,三河古镇景区所有收费景区将面向全国医护工作者实行免费游览政策。
图11-27(b) 为平衡括号串构建分析树的函数
现在可以一行行考虑图11-27b所示的程序了。第(1)行是两个局部变量firstB
和secondB
的声明,这两个局部变量的作用是存放在尝试产生式(2)的情况下对B 的两次调用所返回的分析树。第(2)行会测试输入的下一个终结符是否为(
。如果是,我们就将在产生式(2)的右部中查找实例,如果不是,就要假设使用的是产生式(1),而且ε 就是该平衡串。
在第(3)行,我们要递增nextTerminal
,因为当前输入(
已经匹配上了产生式(2)右部中的(
。我们现在已经让输入游标处在恰当的位置,它对应的对B 的调用将为产生式(2)右部中的第一个<B>找到平衡串。对B的这次调用是在第(4)行发生的,而该调用返回的树被存储在变量firstB
中,它随后会被装配成与当前对B 的调用对应的分析树。
第(5)行要检查是否仍然有能力找到平衡串。也就是说,首先要确定第(4)行对B 的调用没有失败。然后测试nextTerminal
当前的值是否为)
。回想一下,当B返回时,nextTerminal
指向要用来形成平衡串的下一个输入终结符。如果要匹配产生式(2)的右部,而且已经匹配了(
与第一个<B>,那么就必须匹配)
,这就解释了该测试的第二部分。只要该测试的任何一部分失败,当前对B 的调用就会在第(11)行失败。
若通过了第(5)行的测试,则在第(6)和第(7)行要把输入游标移过刚发现的右括号,并再次调用B,以匹配产生式(2)中的最后一个<B>。返回的树被临时存储在secondB
中。
如果第(7)行对B 的调用失败,secondB
的值就会是FAILED
。第(8)行会检测这种情况,而且当前对B 的调用也会失败。
第(10)行代表的是成功找到平衡括号串的情况。我们要返回由makeNode4
构建的树。该树具有标号为‘B
’的根节点以及4个孩子。第一个是标号为(
的叶子节点,它是由makeNode0
构造的。第二个是存储在firstB
中的树,它是通过第(4)行对B 的调用产生的分析树。第三个是标号为)
的叶子节点,第四个则是由第(7)行对B 的第二次调用返回的分析树,它存储在secondB
中。
只有在第(5)行的测试失败时,才会使用第(11)行。第(12)行处理的是第(1)行的初始测试没能在第一个字符的位置找到(
的情况。在这种情况下,假设产生式(1)是正确的。该产生式的右部为ε,因此我们没有销毁任何输入,但返回了一个由makeNode1
创建的节点,其标号为B 而且有一个标号为ε 的子节点。
假设在输入中有终结符串()()ENDM
。这里的ENDM
代表字符'�'
,它是在C语言中用来标记字符串结尾的。图11-27a中main
函数对B的调用确定了(
是当前的输入,而且第(2)行的测试会成功。因此,nextTerminal
在第(3)行会前移,而且第(4)行会进行对B的第二次调用,表示为图11-28中的“调用2”。
图 11-28 在处理输入()()ENDM
时进行的调用
在调用2中,第(2)行的测试失败,因此在第(12)行会返回图11-29a所示的树。现在回到调用1,其中在第(5)行时,nextTerminal
指向的是)
,而且图11-29a的树在firstB
中。因此,第(5)行的测试会成功。我们在第(6)行前移nextTerminal
,并在第(7)行调用B。这是图11-28中所示的“调用3”。
在调用3中,我们在第(2)行成功,在第(3)行前移nextTerminal
,并在第(4)行调用B,该调用就是图11-28中的“调用4”。就和调用2一样,调用4也会在第(2)行的测试失败,并在第(12)行返回一棵类似图11-29a的树但有所不同。
我们现在回到了调用3,其中nextTerminal
仍然指向)
,firstB
(是此次对B的调用的局部变量)存放着一棵类似图11-29a这样的树,而且有着第(5)行的控制。这次测试会成功,而且我们会在第(6)行前移nextTerminal
,所以它现在指向的是ENDM
。我们在第(7)行进行对B的第五次调用。该调用在第(2)行的测试会失败,并在第(12)行返回图11-29a的另一个副本。这棵树称为对应调用3的secondB
的值,并且第(8)行的测试也失败了。因此,在调用3的第(10)行,我们要构建如图11-29b所示的树。
至此,调用3在第(8)行成功地返回到调用1,这时调用1的secondB
存放着图11-29b中的树。就像在调用3中那样,第(8)行的测试会失败,而且我们在第(10)行要构建一棵有着新根节点的树,其第二个孩子是图11-29a所示树的一个副本(这棵树被存放在调用1的firstB
中),而且它的第四个孩子是图11-29b中的树。得到的树被main
函数放置在parseTree
中,它的样子如图11-29c所示。
图 11-29 由对B 的递归调用构建的树
三河400电话申请开通【三河企业网站建设】三河微信公众号小程序开发运营价格、三河微信公众号APP软件客户端设计运营、三河网页页面设计公司费用、三河公司网站制作方案流程改版维护大概需要多少钱
备案号: 苏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