999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

堆棧在語法分析中的應(yīng)用

2014-05-14 01:49:22
天津科技 2014年4期
關(guān)鍵詞:符號分析

張 媛

(天津市河?xùn)|區(qū)職工大學(xué) 天津 300162)

計算機的應(yīng)用中有多種高級語言,把這些高級語言翻譯成對應(yīng)的機器語言,這一過程就是編譯。眾所周知,編譯原理在整個工作過程中通常分為詞法分析、語法分析、語義分析和中間代碼生成,代碼優(yōu)化以及目標代碼生成這幾個階段,每一個階段都會實現(xiàn)不同的功能。在整個編譯過程中,堆棧都起著重要的作用,以下將就堆棧在語法分析中的應(yīng)用進行說明。

所謂語法分析,就是在詞法分析的基礎(chǔ)上,通過分析輸入串對高級語言的語法結(jié)構(gòu)進行分析,分為自上而下的語法分析和自下而上的語法分析兩種方法。

1 自上而下語法分析中堆棧的應(yīng)用

在自上而下的語法分析中,從文法開始符號出發(fā),利用所有的產(chǎn)生式,通過最左推導(dǎo),為輸入符號串自上而下地建立一棵語法樹。在消除回溯和直接左遞歸后,即可利用棧來進行分析。自上而下語法分析中的一種有效方法是預(yù)測分析法,需要用到總控程序、預(yù)測分析表和一個先進后出棧,如圖1所示。

圖1 預(yù)測分析模型圖Fig.1 Forecasting analysis model

在預(yù)測分析法中,棧底中最初存放“#”和文法開始符號,總控程序每次都要根據(jù)棧頂元素和新輸入的符號來進行工作,若棧頂元素為終結(jié)符號,則:

①若棧頂元素=輸入終結(jié)符號≠“#”,則匹配成功,此時將棧頂元素彈出,將指針指向新的輸入符號進行分析。②若棧頂元素=輸入終結(jié)符號=“#”,說明整個輸入符號串分析完成,結(jié)束分析過程。③若棧頂元素是非終結(jié)符號,則需要查看預(yù)測分析表,找到相應(yīng)的產(chǎn)生式,將棧頂元素彈出后,產(chǎn)生式右部的所有符號按照反序依次壓入堆棧中,形成新的棧頂元素。

假設(shè)有文法 G[S]:S→S+S│S*S│a,該文法存在直接左遞歸,消除直接左遞歸得到新的文法:S→aS’,S’→+SS’│*SS’│ε對輸入符號串 a+a*a 的優(yōu)先分析過程如表1所示,其中棧存放分析過程中出現(xiàn)的文法符號序列。

表1 自上而下語法分析對符號串a(chǎn)+a*a的分析過程表Tab.1 Table of analysis process for String a+a*a via topdown syntax analysis

2 自下而上語法分析中堆棧的應(yīng)用

自下而上的語法分析同樣也是要建立一棵語法樹,但它是從葉結(jié)點出發(fā),利用所有產(chǎn)生式,逐步向上構(gòu)造子樹,直至得到根結(jié)點,也就是文法的開始符號。它的主導(dǎo)思想是“移進—規(guī)約”,是推導(dǎo)的逆過程,自上而下分析法是要為輸入符號串找一個最左推導(dǎo),而自下而上分析法則是要找到輸入符號串的句柄,每次都對句柄進行規(guī)約,從而得到一個規(guī)范規(guī)約的過程。自下而上分析法中最常用的就是 LR分析法。在LR分析法中,需要用到LR分析程序、分析表和分析棧,如圖2所示。

圖2 LR分析模型圖Fig.2 LR analysis model diagram

在該模型中,分析棧分為狀態(tài)棧和符號棧兩部分,狀態(tài)棧中存放輸入過程中的不同狀態(tài),棧頂元素為當前狀態(tài),而符號棧中存放的是現(xiàn)行輸入符號,由當前狀態(tài)棧的棧頂元素和現(xiàn)行輸入符號來決定下一個動作。分析棧主要包括4種情況:

① 移進。在這種情況下,當前輸入符號進入符號棧,而下一個輸入符號則變?yōu)楫斍拜斎敕?,查action表,將下一狀態(tài)進入狀態(tài)棧,作為新的棧頂元素。

② 規(guī)約。按照相應(yīng)的產(chǎn)生式進行規(guī)約,若產(chǎn)生式右端共有n個字符,則同時將狀態(tài)棧和符號棧兩個棧頂彈出 n個元素,并將規(guī)約后的符號進入符號棧,作為新的棧頂元素,再查goto表,得到新的狀態(tài)進入狀態(tài)棧。

③ 接受。根據(jù)輸入符號串進行移進和規(guī)約操作后,在符號棧中得到了開始符號及“#”號,則分析完成,整個字符串匹配成功。

④ 報錯。除了以上動作外,其余都屬于出錯情況,此時應(yīng)中止分析,調(diào)用出錯處理程序,進行出錯處理。

對于文法 G[E]:S→S+L│L,L→L*M│M,M→(S)│a及輸入符號串 a*a+a,我們用 LR 分析法的分析過程,如表2所示。

3 結(jié) 論

棧在整個編譯原理的各個過程中都起著重要的作用。進行語法分析時,在自上而下分析方法中用來存放分析過程中出現(xiàn)的字符串序列,在自下而上分析法中分為狀態(tài)棧和符號棧,分別存放分析過程中的狀態(tài)及即將輸入的字符串序列。

[1] 黃賢英,曹瓊,王珂珂. 編譯原理及實踐教程(2版)[M]. 北京:清華大學(xué)出版社,2012.

[2] 王曉斌,陳文宇. 程序設(shè)計語言與編譯(3版)[M]. 北京:電子工業(yè)出版社,2009.

[3] 何炎祥,伍春香,王漢飛. 編譯原理[M]. 北京:機械工業(yè)出版社,2010.

[4] 李文生. 編譯原理與技術(shù)[M]. 北京:清華大學(xué)出版社,2009.

[5] Alfred V Aho,Monica S,etc.Compilers:Principles,Techniques,and Tools(2,nd ed.)[M]. 北京:機械工業(yè)出版社,2011.

猜你喜歡
符號分析
學(xué)符號,比多少
幼兒園(2021年6期)2021-07-28 07:42:14
隱蔽失效適航要求符合性驗證分析
“+”“-”符號的由來
電力系統(tǒng)不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
變符號
電力系統(tǒng)及其自動化發(fā)展趨勢分析
倍圖的全符號點控制數(shù)
圖的有效符號邊控制數(shù)
pqr階Cayley圖的符號星控制數(shù)
中西醫(yī)結(jié)合治療抑郁癥100例分析
主站蜘蛛池模板: 一边摸一边做爽的视频17国产| 亚洲无码A视频在线| 国产欧美日韩精品综合在线| 久久青草视频| 久久精品人妻中文系列| 91国内视频在线观看| 欧美午夜网| 国产成人91精品| 久久久四虎成人永久免费网站| 亚洲人成人无码www| 久无码久无码av无码| 又黄又爽视频好爽视频| 成人欧美日韩| 国产精品美女自慰喷水| 国产精品流白浆在线观看| 无码区日韩专区免费系列| 日本成人精品视频| 精品91在线| 中文字幕啪啪| 亚洲九九视频| 亚洲精品无码不卡在线播放| 国模视频一区二区| 国产精品无码制服丝袜| www亚洲精品| 国产91精品调教在线播放| 久久伊人操| 国产91视频观看| 老色鬼久久亚洲AV综合| 中国黄色一级视频| 亚洲日韩精品无码专区97| 国内毛片视频| 亚洲国产中文精品va在线播放| 欧美一级夜夜爽| 国产成人亚洲精品色欲AV| 91久久偷偷做嫩草影院电| 毛片国产精品完整版| 精品国产一区91在线| 在线毛片网站| 亚洲一区色| 五月婷婷综合色| 99热线精品大全在线观看| 国产第一页亚洲| 国产69精品久久久久妇女| 九九热免费在线视频| A级毛片高清免费视频就| 手机在线免费不卡一区二| 91在线高清视频| 免费A∨中文乱码专区| 免费一级α片在线观看| 国产精品极品美女自在线网站| 亚洲美女AV免费一区| 午夜限制老子影院888| 日韩欧美国产三级| 有专无码视频| 欧美日本不卡| 欧美三级视频在线播放| 亚洲欧美日韩天堂| 免费又爽又刺激高潮网址 | 五月婷婷欧美| 成人精品免费视频| 亚洲三级a| 在线精品亚洲一区二区古装| 激情六月丁香婷婷| 在线看片免费人成视久网下载| 啪啪啪亚洲无码| 亚洲码在线中文在线观看| 国产麻豆精品在线观看| 亚洲AⅤ综合在线欧美一区| 911亚洲精品| 国产00高中生在线播放| 欧美成人免费午夜全| 在线五月婷婷| 在线日韩一区二区| 国产网友愉拍精品| 成年人福利视频| 少妇被粗大的猛烈进出免费视频| 国产精品永久在线| 精品一区二区久久久久网站| 中文天堂在线视频| 午夜福利视频一区| 中文无码精品A∨在线观看不卡| 国产成人精品第一区二区|