亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Java的遞歸下降語法分析器的實現(xiàn)

        2020-09-10 07:22:44劉楊
        客聯(lián) 2020年7期
        關(guān)鍵詞:程序分析

        劉楊

        【摘 要】遞歸下降分析是設(shè)計LL(1)文法的自上而下語法分析的一種思路。相對于其他的語法分析構(gòu)造方法,這一邏輯簡單明了,易于用代碼實現(xiàn)。只不過,作為自上而下的分析方法,在編寫代碼前,要確保所分析的文法是不含左遞歸并且是消除回溯的。

        本文將先后介紹LL(1)文法的成立條件和遞歸下降分析器的設(shè)計邏輯,最后給出程序的關(guān)鍵代碼段示例。

        【關(guān)鍵詞】編譯原理;語法分析;自上而下分析;遞歸下降;LL(1)分析

        一、LL(1)文法

        這里,首先給出LL(1)文法的三個成立條件:

        1)文法中不含有左遞歸;

        2)對文法中任意一個非終結(jié)符的各個產(chǎn)生式的候選的FIRST集兩兩不相交;

        3)對文法中每個非終結(jié)符A,若其某個產(chǎn)生式的FIRST集合含有ε,則需要FIRST(A)與FOLLOW(A)不相交。

        消除左遞歸是直接在文法結(jié)構(gòu)上做修改,防止產(chǎn)生式右部最終推導(dǎo)回到了原來產(chǎn)生式左部的非終結(jié)符。

        上述第2個條件是為了消除大部分回溯。在面臨單個字符時,同一個終結(jié)符的不同產(chǎn)生式可能都可以初步接受(FIRST集合有重合部分),但是正確結(jié)果往往只有一個;而想發(fā)現(xiàn)錯誤也往往要把該條產(chǎn)生式的路徑走到底,這就造成程序可能要不斷地“碰壁”而從頭開始重新掃描輸入,造成大量不必要的開銷。但是,只要同一個非終結(jié)符的每個產(chǎn)生式FIRST集不相交,導(dǎo)致各個產(chǎn)生式識別初步接受的字符集合是獨立的,相對唯一的,那么識別字串的路徑就能保證是唯一的。

        上述第3個條件,是為了解決和ε產(chǎn)生式有關(guān)的回溯問題。掃描輸入串的過程中,當(dāng)某一個字符不能被當(dāng)前產(chǎn)生式直接識別,如果該產(chǎn)生式對應(yīng)的非終結(jié)符有ε產(chǎn)生式,那么可以考慮使用ε暫時作為識別結(jié)果,使得程序能夠向后判斷產(chǎn)生式是否匹配。使用ε產(chǎn)生式的條件是,當(dāng)前字符必須在當(dāng)前非終結(jié)符的后繼/后隨終結(jié)符集中出現(xiàn)過,也就是其FOLLOW集。

        二、遞歸下降分析器的設(shè)計

        遞歸下降,就是自上而下語法分分析的主要思想。遞歸下降分析器專指的是實現(xiàn)LL(1)分析的程序。這樣的程序,由一組遞歸的過程組成,其中每一個遞歸過程代表著文法的一個非終結(jié)符。也就是程序結(jié)構(gòu)與文法的產(chǎn)生式結(jié)構(gòu)緊密相連,這也是該程序易于構(gòu)造的重要原因。執(zhí)行的過程類似于數(shù)據(jù)結(jié)構(gòu)中對二叉樹的從左到右的深度優(yōu)先遍歷。下面我們以文法G為設(shè)計對象:

        G:

        E→TE'

        E'→+TE'| -TE' |ε

        T→FT'

        T'→*FT'| /FT' |ε

        F→(E) | id |num

        可以得到各非終結(jié)符的FIRST集和FOLLOW集:

        FIRST(E) = {(, id, num};FIRST(E') = {+, -, ε};FIRST(T) = {(, id, num}

        FIRST(T') = {*, /, ε};FIRST(F) = {(, id, num}

        FOLLOW(E) = {), #};FOLLOW(E') = {id, num};FOLLOW(T) = {id, num}

        FOLLOW(T') = {id, num};FOLLOW(F) = {id, num}

        上述文法明顯滿足了LL(1)條件。

        三、代碼段分析

        以下以產(chǎn)生式E→TE’為例展示遞歸過程;E’、T’等使用E2、T2表示。

        (一)遞歸的開始

        (二)執(zhí)行到E中的T和E’

        (三)執(zhí)行到F和T’

        【參考文獻(xiàn)】

        [1] 陳火旺,等.程序設(shè)計語言編譯原理(第3版)[M].北京:國防工業(yè)出版社,2006: 68-76

        [2] [美] Andrew W.Appel.現(xiàn)代編譯原理[M].趙克佳,等,譯.北京:人民郵電出版社, 2006: 36-37

        猜你喜歡
        程序分析
        隱蔽失效適航要求符合性驗證分析
        試論我國未決羈押程序的立法完善
        電力系統(tǒng)不平衡分析
        電子制作(2018年18期)2018-11-14 01:48:24
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        電力系統(tǒng)及其自動化發(fā)展趨勢分析
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        中西醫(yī)結(jié)合治療抑郁癥100例分析
        恐怖犯罪刑事訴訟程序的完善
        国产精品爽爽VA吃奶在线观看| 亚洲中文字幕日产无码| 无码伊人66久久大杳蕉网站谷歌| 久久久精品一区aaa片| 中文字幕精品久久久久人妻| 婷婷综合久久中文字幕蜜桃三电影 | 午夜成人理论无码电影在线播放| 一二三四在线视频社区3| 亚洲爆乳大丰满无码专区| 国产精品白浆免费观看| 99久久国产免费观看精品| 乱中年女人伦av三区| av大片在线无码免费| 日本精品一区二区在线看| 国产性虐视频在线观看| 最新国产毛2卡3卡4卡| 亚洲熟女乱色综合亚洲图片| 男女真实有遮挡xx00动态图 | 国产精品久久一区二区三区| 久久国产成人免费网站| 亚洲人妻有码中文字幕| 国产av丝袜熟女丰满一区二区 | 97精品人人妻人人| 亚洲国产精品福利片在线观看| 国产精品无码久久久久免费AV| 亚洲一区二区三在线播放| 亚洲乱码av一区二区蜜桃av| 亚洲av综合色区无码一区| 欧美人与动牲交a精品| 久久精品国产亚洲av高清色欲| 亚洲乱精品中文字字幕| 风骚人妻一区二区三区| 高清精品一区二区三区| 奇米影视久久777中文字幕| av网页在线免费观看| 手机免费在线观看av网址| 人妻少妇中文字幕乱码| 免费黄色电影在线观看| 一区二区三区蜜桃在线视频| 亚洲视频免费一区二区| 天天躁日日躁狠狠躁|