分析器LR分析法的LR分析器的逻辑结构及工作原理

分析器  时间:2021-09-04  阅读:()

静电分析器是干什么用的

静电分析(教科书注解):周围一圈是屏幕的金属圈,中间有两片纸~好像是吧~拿着玻璃棒在丝绸上搓半天,放在纸上,纸就会分开! 不知楼主所说的静电分析器是否是静电削除器。

静电消除器也可以叫除静电设备,其原理如下。

它由高压电源产生器和放电极(一般做成离子针)组成,通过尖端高压电晕放电把空气电离为大量正负离子,然后用风把大量正负离子吹到物体表面以中和静电,或者直接把静电消除器靠近物体的表面而中和静电。

LR分析法的LR分析器的逻辑结构及工作原理

在逻辑上,一个LR分析器有一个输入符号串,一个下推分析栈,以及一个总控程序和分析表。

LR分析器在总控程序的控制下自左至右扫视输入串的各个符号,并根据当前分析栈中所存放之文法符号的状况及正注视的输入符号,按分析表的指示完成相应的分析动作。

在分析的每一时刻,分析栈中记录了迄今为止所移进或归约出的全部文法符号,即记录了从分析开始到目前为止的整个历程。

因此,为了方便,对于分析过程的每一步,我们可将分析栈中所存放的全部文法符号用一种“状态”来刻画,且将此状态名置于分析栈的栈顶所示。

分析刚开始时,栈中仅有一个句子的左界符#,此时分析器处于初始状态S0,它不仅刻画了分析栈中当前仅有一个符号#这一事实,而且还预示着即将扫视的输入符号应当是可作为句子首符号的那些符号。

类似地,状态S1刻画了分析栈中已有符号#X1的情况,…,栈顶状态Sm则刻画了分析栈中已存在符号串#X1X2…Xm的情况,等等。

此外,根据分析栈的栈顶状态,还可对当前可能遇到的输入符号进行预测。

例如,对于前面所述的文法G[E],设分析栈中已移进和归约出的符号串为#E+T时的栈顶状态为Si,则Si不仅表征了迄今扫描过的输入串部分已被归约成#E+T,而且由Si还可以作这样的预测: 若输入符号串无语法错误,则当前可遇到的输入符号仅能是+,*,)或#。

显然,在栈顶状态为上述Si的情况下,若当前所扫视到的符号为*,则应将*移进栈中;当所扫视到的符号为+,)或#时,则应将E+T归约为E;若所扫视到的符号不是上述四种符号之一,则应按语法错误处理。

由此可见,知道了栈顶状态Sm和正扫视到的输入符号ai,就知道了当前所需的全部有用信息,从而也就可惟一地确定当前LR分析器所应采取的动作。

所以,在具体实现时,并不需要将文法符号记入分析栈中。

LR分析器的核心是一张分析表,它由两个子表组成: 其一是分析动作表;另一个为状态转移表。

其中: S1,S2,…,Sn为分析器的各个状态;a1,a2,…,al为文法的全部终结符号和句子界符;X1,X2,…,Xp为文法字汇表中的全部文法符号。

分析动作表中的每一个元素ACTION[Sm,ai]指明,当栈顶状态为Sm且正扫视的输入符号为ai时要完成的分析动作。

状态转移表中的元素GOTO[Sm,Xi]则指明,当向分析栈中移进一个输入符号或按某一产生式进行归约之后所要转移到的下一状态。

LR分析器的工作在总控程序的控制下进行,其过程如下 (为书写方便,我们将分析栈按顺时针旋转90度): 1?分析开始时,首先将初始状态S0及句子左界符#推入分析栈。

2?设在分析的某一步,分析栈和余留输入符号串处于如下格局: S0S1S2…S↓m[]#X1X2…Xma↓iai+1…an# 则用当前栈顶的状态Sm及正扫视的输入符号ai组成符号对(Sm,ai)去查分析动作表,并根据分析表元素ACTION[Sm,ai]的指示采取相应的分析动作,每一分析表元素所指示的仅能是下列四种动作之一: (1) 若ACTION[Sm,ai]=“移进”,则表明句柄尚未在栈顶部形成,正期待继续移进输入符号以形成句柄,故将当前的输入符号ai推入栈中,即 S0 S1 S2 … S↓m[]# X1 X2 … Xm aia↓i+1ai+2…an# 然后,以符号对(Sm,ai)查状态转移表,设相应的表元素GOTO[Sm,ai]=Sm+1,再将此新的状态Sm+1 (即要转移到的下一状态)推入栈中,则有如下格局: S0 S1 S2 … Sm S↓m+1[]# X1 X2 … Xm aia↓i+1ai+2…an# (2) 若ACTION[Sm,ai]=rj,其中rj意指按文法的第j个产生式A→Xm-r+1Xm-r+2…Xm进行归约。

这表明栈顶部的符号串Xm-r+1Xm-r+2…Xm已是当前句型 (对非终结符号A)的句柄。

按第j个产生式进行归约,也就是将分析栈从顶向下的r个符号 (因为该产生式右部符号串的长度为r)退出,然后再将文法符号A推入栈中,此时分析栈的格局为 S0 S1 S2 … S↓m-r[]# X1 X2 … Xm-r Aa↓iai+1…an# 然后再以(Sm-r,A)查状态转移表,设GOTO[Sm-r,A]=SK,将此新状态推入栈中,则有如下的格局: S0S1S2…Sm-rS↓K[]#X1X2…Xm-rAa↓iai+1…an# 必须注意的是,当完成归约动作之后,输入串指示器不向前推进,它仍然指向动作前的位置。

(3) 若ACTION[Sm,ai]=“接受”则表明当前的输入串已被成功地分析完毕,应中止分析器的工作。

(4) 若ACTION[Sm,ai]=ERROR,则表明当前的输入串中有语法错误,此时应调用出错处理程序进行处理。

3?重复步骤2的工作,直到在分析的某一步,栈顶出现“接受状态”为止。

此时,分析栈的最终格局应为 S0S↓z[]#Z#↓ 其中,Z为文法的开始符号,Sz则为使ACTION[Sz,#]=“接受”的惟一状态 (即接受状态)。

上述所列的三个步骤,实质上是对LR分析器总控程序的一个非形式化的描述,它对任何不同的LR分析表都是适用的。

顺便提及,LR分析器的输出是在用某个产生式进行归约之后,通过执行相应的语义子程序来实现的,我们将在第5章再讨论这一问题。

酷番云78元台湾精品CN2 2核 1G 60G SSD硬盘

酷番云怎么样?酷番云就不讲太多了,介绍过很多次,老牌商家完事,最近有不少小伙伴,一直问我台湾VPS,比较难找好的商家,台湾VPS本来就比较少,也介绍了不少商家,线路都不是很好,有些需求支持Windows是比较少的,这里我们就给大家测评下 酷番云的台湾VPS,支持多个版本Linux和Windows操作系统,提供了CN2线路,并且还是原生IP,更惊喜的是提供的是无限流量。有需求的可以试试。可以看到回程...

spinservers春节优惠:$149/月10Gbps圣何塞服务器-2*E5-2630Lv3 CPU,256G内存,2*1.6T SSD硬盘

spinservers是Majestic Hosting Solutions LLC旗下站点,商家提供国外服务器租用和Hybrid Dedicated等产品,数据中心包括美国达拉斯和圣何塞机房,机器默认10Gbps端口带宽,高配置硬件,支持使用PayPal、信用卡、支付宝或者微信等付款方式。农历春节之际,商家推出了几款特别促销配置,最低双路E5-2630Lv3机器每月149美元起,下面列出几款机器...

HostKvm香港VPS七折:$5.95/月KVM-2GB内存/40GB硬盘/500GB月流量

HostKvm是一家成立于2013年的国外主机服务商,主要提供VPS主机,基于KVM架构,可选数据中心包括日本、新加坡、韩国、美国、俄罗斯、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。商家本月针对香港国际机房提供特别7折优惠码,其他机房全场8折,优惠后2G内存香港VPS每月5.95美元起,支持使用PayPal或者支付宝付款。下面以香港国际(HKGlobal)为...

分析器为你推荐
网络限速软件有什么比较好的网络限速的软件购物网站设计如何制作购物网站科学计算器说明书科学计算器怎样用?gps简介手机GPS功能是什么?fshow瑜伽有什么好处,快三十的人啦,练瑜伽可以吗宴请网怎样拉别人进我的短号集群网?我只是在那个网里面 可以邀请别人进来这个网吗?网络连接受限制网络连接受限制监控软件安装怎么安装监控系统啊存储系统简述计算机的存储系统是由什么组成的电商运营学习电商运营培训班都教哪些东西?
fc2新域名 怎样注册域名 国外vps 网站域名备案 jsp主机 l5639 vmsnap3 koss suspended parseerror 灵动鬼影 警告本网站美国保护 dux 百兆独享 域名接入 服务器干什么用的 paypal注册教程 网站在线扫描 新睿云 美国凤凰城 更多