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

        ?

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

        2020-09-10 07:22:44劉楊
        客聯(lián) 2020年7期
        關鍵詞:分析器文法字符

        劉楊

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

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

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

        一、LL(1)文法

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

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

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

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

        消除左遞歸是直接在文法結構上做修改,防止產生式右部最終推導回到了原來產生式左部的非終結符。

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

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

        二、遞歸下降分析器的設計

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

        G:

        E→TE'

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

        T→FT'

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

        F→(E) | id |num

        可以得到各非終結符的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)條件。

        三、代碼段分析

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

        (一)遞歸的開始

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

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

        【參考文獻】

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

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

        猜你喜歡
        分析器文法字符
        尋找更強的字符映射管理器
        關于1940 年尼瑪抄寫的《托忒文文法》手抄本
        字符代表幾
        一種USB接口字符液晶控制器設計
        電子制作(2019年19期)2019-11-23 08:41:50
        酒精分析器為什么能分辨人是否喝過酒
        消失的殖民村莊和神秘字符
        多邊形電極線形離子阱質量分析器的結構與性能
        分析化學(2018年12期)2018-01-22 12:31:46
        應用于詞法分析器的算法分析優(yōu)化
        Similarity measurement method of high-dimensional data based on normalized net lattice subspace①
        A nearest neighbor search algorithm of high-dimensional data based on sequential NPsim matrix①
        亚洲综合在线观看一区二区三区| 国产中文制服丝袜另类| 99久久精品一区二区三区蜜臀| 亚洲国产一区中文字幕| 日本一区二区三区免费精品| 九九热线有精品视频86| 日本色噜噜| 好看午夜一鲁一鲁一鲁| 国产av一区二区毛片| 亚洲av无码精品国产成人| 欧美白人最猛性xxxxx| 国产在线AⅤ精品性色| 亚洲中文字幕高清av| 久久国产加勒比精品无码| 美女自卫慰黄网站| 久久久精品国产亚洲麻色欲 | 亚洲欧美性另类春色| 91久久国产精品综合| 无码专区人妻系列日韩精品| 欧美操逼视频| 亚洲男人天堂av在线| 日本一区二区三区丰满熟女| 国产精品极品美女自在线观看免费 | 一级午夜理论片日本中文在线| 免费在线观看视频播放| 欧美粗大猛烈老熟妇| 国产偷2018在线观看午夜| 国产一区二区杨幂在线观看性色| 性做久久久久久免费观看| 久久精品人妻一区二区三区| 日韩人妻无码精品系列专区无遮| 亚洲写真成人午夜亚洲美女| 人妻聚色窝窝人体www一区| 99久久人妻无码精品系列蜜桃| 精品国产精品久久一区免费| 精品av熟女一区二区偷窥海滩| 久久免费看少妇高潮v片特黄| 国产亚洲三级在线视频| 国产日本精品视频一区二区 | 全免费a级毛片| 日本一区二区亚洲三区|