分析器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章再讨论这一问题。

特网云57元,香港云主机 1核 1G 10M宽带1G(防御)

特网云官網特网云服务器在硬件级别上实现云主机之间的完全隔离;采用高端服务器进行部署,同时采用集中的管理与监控,确保业务稳定可靠,搭建纯SSD架构的高性能企业级云服务器,同时采用Intel Haswell CPU、高频DDR4内存、高速Sas3 SSD闪存作为底层硬件配置,分钟级响应速度,特网云采用自带硬防节点,部分节点享免费20G防御,可实现300G防御峰值,有效防御DDoS、CC等恶意攻击,保障...

无法忍受旧版不兼容PHP7+主题 更换新主题

今天父亲节我们有没有陪伴家人一起吃个饭,还是打个电话问候一下。前一段时间同学将网站账户给我说可以有空更新点信息确保他在没有时间的时候还能保持网站有一定的更新内容。不过,他这个网站之前采用的主题也不知道来源哪里,总之各种不合适,文件中很多都是他多年来手工修改的主题拼接的,并非完全适应WordPress已有的函数,有些函数还不兼容最新的PHP版本,于是每次出现问题都要去排查。于是和他商量后,就抽时间把...

Hostodo(年付$34.99), 8TB月流量 3个机房可选

Hostodo 算是比较小众的海外主机商,这次九月份开学季有提供促销活动。不过如果我们有熟悉的朋友应该知道,这个服务商家也是比较时间久的,而且商家推进活动比较稳,每个月都有部分活动。目前有提供机房可选斯波坎、拉斯维加斯和迈阿密。从机房的地理位置和实际的速度,中文业务速度应该不是优化直连的,但是有需要海外业务的话一般有人选择。以前一直也持有他们家的年付12美元的机器,后来用不到就取消未续约。第一、开...

分析器为你推荐
xhtml什么是 XHTML?山东省通信管理局哪位朋友知道山东通信管理局负责备案的办公室电话win10发布win10发布者不受信任怎么办 win10如何取消阻止该发布者swift语言swift语言坑死ios开发者,这样怎么说呢?有基础入门课程推荐吗?招行信用卡还款招商信用卡怎么还款呢t320平板电脑三星 galaxy tab pro t320怎么样burndown如何画burndown chart分销渠道案例企业分销渠道成功的案例分析网游木马最新网游木马及其防范技巧云弟有关描写石榴的诗
南通服务器租用 双线vps wavecom 空间打开慢 suspended wdcp dropbox网盘 促正网秒杀 国外免费全能空间 nerds metalink 如何注册阿里云邮箱 in域名 申请免费空间和域名 国外视频网站有哪些 厦门电信 监控服务器 湖南idc 免费个人主页 万网主机 更多