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

LL(1)文法分析器的研究與分析

2017-05-30 15:40:44鄧麗慧
科技風 2017年25期
關鍵詞:符號程序規則

摘 要:在計算機編程領域中,語法分析是編譯程序的核心部分,它有著極其重要的地位,語法分析的作用是在詞法分析識別單詞符號串的基礎上,分析并判斷程序的語法結構是否符合語法規則。目前語法分析包含為自頂向下的分析方法和自底向上的分析方法兩大類。明確文法分析的方法時,選用實用的方法對文法進行分析。本文主要采用自頂向下的分析方法,對LL(1)文法做出適當的分析與研究,LL(1)文法的功能是利用LL(1)控制程序和相關文法生成LL(1)分析表,對輸入符號串進行自上而下的分析過程。

關鍵詞:LL(1)分析法;自頂向下

1 原理概述

LL(1)文法使用的是確定的自頂向下的分析技術。其中LL(1)的代表的含義是:第一個L表明自頂向下分析是從左向右掃描輸入串,第二個L表明分析過程中將使用的是最左推導,1表明的是只需要向右看一個符號便可以決定如何推導,也就是說選擇哪一個規則進行推導。

在對LL(1)文法的判別中,要銘記步驟即首先計算FIRST集,然后計算FOLLOW集和SELLECT集,最后判斷是否為LL(1)文法,在此基礎上再進行句子的分析。

2 文法規則說明

2.1 詞法規則

在本文中,討論的字符可以規定為終結符或非終結符,但“#”作為空串處理不可以作為終結符或非終結符去處理。

2.2 文法規則

(1)在產生式中,右邊的字符不全是由終結符組成。

(2)如果在兩個產生式中相同的左邊字符,它們的右邊一定是由不同的終結符或非終結符開始的。

3 算法設計

3.1 表驅動的LL(1)分析器

LL(1)分析法的基礎思想是根據輸入串的當前輸入來唯一確定選用某一條產生式來進行推導,當這個輸入符號與推導的第一個符號相同時,再取出下一個輸入串的符號,繼續確定下一個推導應該選用的規則:如此下去直到推出被分析的輸入串為止。

一個LL(1)分析器由一張LL(1)分析表、一個先進后出的分析棧以及一個控制程序組成,如圖1所示:

(1)輸入串是待分析的符號串,它以邊界符“#”作為結束標志。

(2)分析棧中存放的是分析過程中的文法符號。開始時棧底已經存入了一個“#”作為標示,然后再壓入文法的開始符號;當分析棧中只剩下“#”標示時,說明輸入串指針也指向了串尾的“#”標示,這時表明分析成功。

(3)在本程序中概括了相應文法的全部信息。二維數組中的每一行與文法的一個終結符相關聯,而每一列與文法的一個終結符或者是“#”標示相關聯。

3.2 表驅動的LL(1)分析器

為了構造分析表N,要預先定義和構造文法的相關集合FIRST集合FOLLOW集,其中需要注意的是:

FIRST(α)={a|α->a...,a∈Vt},在此其中需要注意的是ε∈FIRST(α),換句話說α的所有可能推導的開頭終結符或可能的ε。

FOLLOW(A)={a|S->...Aa...,a∈Vt},S->...Aa,說明邊界符#∈FOLLOW(A)也就是所有句型中出現在緊隨A之后的非終結符。

對于FIRST集合的確定:

FIRST集合最終是對產生式右部的字符串而言的,其關鍵是求出非終結符的FIRST集合,其中知道終結符的FIRST集合就是它自己,所以求出非終結符的FIRST集合后,就很直觀地了解了每個字符串的FIRST集合。確定FIRST集主要有兩種方法:

(1)直接收取:對形如S->a…的產生式(a是終結符),把a收入到FIRST(S)中。

(2)反復傳送:對形入S->A…的產生式(其中A是非終結符),應把FIRST(A)中的全部內容傳送到FIRST(S)中,換句話說只需要把第一個非終結符的FIRST集傳過去。

對于FOLLOW集合的確定:

我們都知道FOLLOW集合是針對非終結符而言的,FOLLOW(A)所表達的是句型中非終結符A所有可能的后隨終結符號的集合,特別地,“#”是識別符號的后隨符。注意FOLLOW集合是從開始符號S開始推導。其求法主要有以下幾種:

(1)直接收取:注意產生式右部的每一個形如“…Aa…”的組合,把a直接收入到FOLLOW(A)中。因a是緊跟在A后的終結符。

(2)直接收取:對形如“…SA…”(A是非終結符)的組合,把FIRST(A)直接收入到FOLLOW(S)中.

(3)直接收取:若S->…A,即以A結尾,則#∈Follow(A)

(4)反復傳送:對形如S->…A的產生式(其中A是非終結符),應把Follow(S)中的全部內容傳送到Follow(A)中。

總之:Follow集比First要復雜一點。

當確定好FIRST集和Follow集之后,就可以對LL(1)分析表進行構建了,具體如圖2所示:

4 關于文法的判斷

要想確定一個文法是不是LL(1)文法,需要對SELLECT集合進行確定,對于SELLECT集來說,在上文中已經求出了FIRST集合FOLLOW集,通過它們SELECT集就很好確定了,Select集的作用是將first集和follow集進行合并,如果兩個文法的左端都是A,若他們的select集交集為空,表明他們是兩個無關的,不會產生不確定性的文法即該文法是LL(1)文法,反之,則表明文法不是LL(1)文法。

在SELECT集確定的過程中需要知道的是:

(1)如果α是終結符,那么SELECT(A->α)={α}。

(2)如果α是“#”,那么SELECT(A->α)=FOLLOW(A)。

(3)如果α是非終結符,分為下列兩種情況:

①如果a=>#,則SELECT(A->α)=(FIRST(α)-#)U FOLLOW(A)。

②如果!a=>#,則SELECT(A->α)=FIRST(α)。

5 其他說明

本文中涉及的程序是由JAVA所編寫的,在程序中LL類表示的含有終態集和非終態集,其中所設計的方法全部都為靜態方法,在程序中,當構建好LL(1)分析表后,輸入需要分析的串就可以得到相關的分析表。程序流程圖如圖3所示:

6 總結

遞歸下降分析法是確定的自上而下分析法,這種分析法要求文法是LL(1)文法。它的基本思想是,對文法中的每個終結符編寫一個函數(或子程序),每個函數(或子程序)的功能是識別由該非終結符所表示的語法成分。由于描述語言的文法常常是遞歸定義的,因此相應的這組函數(或子程序)必然以相互遞歸的方式進行調用。在選用自頂向下分析技術時,首先必須判斷所給文法是否是LL(1)文法,然后編寫構造LL(1)語法分析程序。因而對任給文法需計算FIRST、FOLLOW、SELECT集合,進而判別文法是否為LL(1)文法。

參考文獻:

[1]陳火旺.程序設計語言編譯原理.國防工業出版社,2006.

[2]胡元義.編譯原理實踐教程.西安電子科技大學出版社,2010.

[3]劉淼.LL(1)文法的研究[D].2011.

作者簡介:鄧麗慧(1988-),女,漢族,四川內江人,本科,初級工程師,現任職務:助理工程師,研究方向:計算機應用。

猜你喜歡
符號程序規則
撐竿跳規則的制定
學符號,比多少
幼兒園(2021年6期)2021-07-28 07:42:14
數獨的規則和演變
“+”“-”符號的由來
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
讓規則不規則
Coco薇(2017年11期)2018-01-03 20:59:57
“程序猿”的生活什么樣
變符號
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
TPP反腐敗規則對我國的啟示
主站蜘蛛池模板: 国产91视频观看| 国产在线精品99一区不卡| 成人免费网站久久久| 亚洲国产精品国自产拍A| 日韩在线视频网站| 爱爱影院18禁免费| 亚洲无线国产观看| 成人免费网站在线观看| 国产99在线观看| 国产在线视频导航| 成年人免费国产视频| 无码在线激情片| 四虎在线高清无码| 亚洲欧洲日产国产无码AV| 中文字幕免费在线视频| 亚洲国产91人成在线| 天天躁狠狠躁| 亚洲AⅤ永久无码精品毛片| 精品人妻一区二区三区蜜桃AⅤ| 5555国产在线观看| 色婷婷成人| 香蕉eeww99国产在线观看| 在线观看国产精美视频| 91麻豆精品国产91久久久久| 精品乱码久久久久久久| 精品国产一区二区三区在线观看 | 国产精品一区在线麻豆| 精品国产中文一级毛片在线看| 久久综合色88| 一级毛片基地| 亚洲国模精品一区| 六月婷婷综合| 国产网站一区二区三区| 亚洲视频在线网| 尤物精品国产福利网站| 国产人成在线观看| 青青青伊人色综合久久| 国产在线精品人成导航| 亚洲成aⅴ人片在线影院八| 国产特一级毛片| 色综合热无码热国产| 永久免费av网站可以直接看的 | 国产在线视频欧美亚综合| 综合网久久| 免费人成视网站在线不卡| 亚洲不卡av中文在线| 九色综合伊人久久富二代| 中文字幕亚洲综久久2021| 九色综合伊人久久富二代| 色妞永久免费视频| 不卡无码网| 99伊人精品| 精品无码国产自产野外拍在线| 鲁鲁鲁爽爽爽在线视频观看| 国产精品无码影视久久久久久久| 国产全黄a一级毛片| 久99久热只有精品国产15| 熟妇人妻无乱码中文字幕真矢织江| 欧美伦理一区| 亚洲人成在线精品| 99re这里只有国产中文精品国产精品 | 欧美在线天堂| 精品久久人人爽人人玩人人妻| 欧美日韩一区二区在线播放| 91探花在线观看国产最新| 国产亚洲视频免费播放| 成人久久18免费网站| 精品丝袜美腿国产一区| 这里只有精品在线| 国产精品无码AV中文| 97国产精品视频人人做人人爱| 久久久久人妻一区精品色奶水| 欧美色视频在线| 91区国产福利在线观看午夜| 国产一区二区三区免费观看| h网站在线播放| 精品久久久久无码| 日本伊人色综合网| 伊人久久久久久久久久| 亚洲日本中文字幕乱码中文 | 91美女视频在线观看| 欧洲高清无码在线|