【正文】
學(xué)位論文 一個編譯原理語法分析器的實現(xiàn)與設(shè)計 論文作者姓名: 申請學(xué)位專業(yè): 申請學(xué)位類別: 指導(dǎo)教師姓名(職稱): 論文提交日期: 一個編譯原理語法分析器的實現(xiàn)與設(shè)計 摘 要 編譯程序一般由詞法分析程序、語法分析程序、語義分析程序、中間代碼生成程序、目標(biāo)代碼生成程序、代碼優(yōu)化程序、表格管理程序和出錯處理程序等成分構(gòu)成。 在編譯原理的教學(xué)過程中,算法的講解都需要對算法進(jìn)行詳細(xì)的分析,包括算法條件的判斷,文法分析表的構(gòu)造過程,文法分析表的具體生成,針對文法的句子的分析過程等, 這些過程往往需要占用大量時間來分析、制表等。本軟件的主要任務(wù)就是利用程序來完成算法的上述相關(guān)過程,以達(dá)到高效,直觀的效果。 本文旨在介紹語法分析方法中的一種自上而下的分析方法 —— LL(1)分析法。所謂 LL(1)分析法是指語法分析是按自左至右的順序向前查看一個輸入字符串,并分析過程中產(chǎn)生句子的最左推導(dǎo) 。 關(guān)鍵詞 :編譯;語法分析; LL(1)算法;演示 The Design and Implementation of A Syntax Analyzer based on Compilation Theory Abstract The piler generally is made up of the lexical analyzer program, the syntax analysis program, the semantics analysis program, the interlanguage production procedure, the goal code production procedure, the code optimization procedure, the form executive program and the procedure of disposing mistakes. In the teaching process of piler principle, all algorithm explanation needs to be explain clearly, including algorithm condition judgment, grammar analytical table structure process, grammar analytical table concrete production, in view of grammar sentence analysis process and so on. These processes often take much time to analyze, the scheduling and so on. This program mainly work is to plete the algorithm which take advantage of the procedure to deal with those above mentioned processes , in order to save time. The paper aims at introducing a syntax analytical method named LL(1) algorithm which from the up to down. The syntax analyzer analyzes the character string beginning from the left to right one word each time and educes the most left deduction of the sentence in the analyze course.. Key words: piler。 grammar analysis。 LL(1) algorithm。 demonstrate 目 錄 論文總頁數(shù): 22頁 1引言 ...................................................................... 1 .............................................................. 1 .................................................................. 1 .............................................................. 1 .............................................................. 2 ...................................................... 2 遞歸子程序 ....................................................... 3 LL( K)分析方法 ................................................... 4 LL( 1)分析方法 ................................................... 4 (1)分析表 ....................................................... I 2 系統(tǒng)流程圖 .............................................................. II ........................................................... II 系統(tǒng)模塊流程圖 ..................................................... III 3 系統(tǒng)實施 ............................................................... III ......................................................... IV CommonDialog控件介紹 ............................... IV ................................................. IV .......................................................... V select集 ....................................................... V first集 ....................................................... VI follow集 ...................................................... VI ..................................................... VIII ................................................. VIII ::=aβ規(guī)則 ...................................................... IX ::=Dβ規(guī)則 ...................................................... IX ::=ε規(guī)則 ....................................................... IX ......................................................... IX ......................................................... IX .......................................................... X 4 特殊問題及解決方法 ...................................................... X4 Select集的求解 ...................................................... XI 問題描述 ........................................................ XI 解決方案 ........................................................ XI 解決結(jié)果 ........................................................ XI ListBox添加水平滾動條 ............................................ XI5 問題描述 ....................................................... XI5 解 決方案 ....................................................... XI5 解決結(jié)果 ...................................................... XII6 5 結(jié)果測試 .............................................................. XII6 ....................................................... XII6 ......................................................... XV 結(jié) 論 ................................................................ XVI0 參考文獻(xiàn) .............................................................. XVI0 致 謝 ............................................................... XVII1 聲 明 .............................................................. XVIII2 第 1 頁 共 22 頁 1 引言 項目背景 編譯原理是計算機專業(yè)中最難的一門課程 ,在理論上它要求學(xué)生掌握有關(guān)形勢語言和自動機的抽象概念 ,在技術(shù)上要求學(xué)生能夠熟練地利用各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行編程。 編譯程序是現(xiàn)代計算機系統(tǒng)的基本組成部分之一。編譯程序一般由詞法分析程序、語法分析程序、語義分析程序 、中間代碼生成程序、目標(biāo)代碼生成程序、代碼優(yōu)化程序、表格管理程序和出錯處理程序等成分構(gòu)成。 在編譯原理的教學(xué)過程中,語法和語義分析階段關(guān)于算法的講解都需要對算法進(jìn)行詳細(xì)的分析,包括算法條件的判斷,文法分析表的構(gòu)造過程,文法分析表的具體生成,針對文法的句子的分析過程等。這些過程往往需要占用大量時間來分析、制表等。教學(xué)主要是對這些過程的講解和分析,沒有必要花這么多的時間來做這些工作。本軟件的主要任務(wù)就是利用程序來完成算法的上述相關(guān)過程,節(jié)約教學(xué)時間。 《 一個編譯原理語法分析器的設(shè)計與實現(xiàn)》 通過文本方式獲取相關(guān)文法,并實現(xiàn)以下相關(guān)操作: LL( 1)的要求 select集(其中包括 first集和 follow集的求解)并判斷 select集是否符合 LL( 1)算法的要求 select 集構(gòu)造文法分析表 語法分析 : 逐一分析詞法分析所得的屬性字,檢查其中的語法錯誤,如果沒有發(fā)現(xiàn)語法錯誤, 則給出正確的語法結(jié)構(gòu)。 句子的分析 :句子的分析實際就是分析源程序中的語句是否符合 給定的文法。 文法 :對語言結(jié)構(gòu)的定義和描述,即在形式上用于描述和規(guī)定語言結(jié)構(gòu)。由若干條規(guī)則組成。 規(guī)則 :為一個二元組,通常格式為 U:: =x 或 U→ x;其中 U 為規(guī)則的左部,是一個符號; x是規(guī)則的右部,是一貫有窮字符串。規(guī)則又稱為產(chǎn)生式。 BNF 表示法 :即巴科斯范式表示法,它引進(jìn)了符號“ |”,符號“ |”表示“或”。運用符號“ |”把相同左部的規(guī)則縮寫在一起,這樣顯得文法更為緊湊。 第 2 頁 共 22 頁 文法 G[Z]:規(guī)則的非空有窮集合,其中 Z 為文法的 識別符號 或 開始符號 ,它至少要在一條規(guī)則的左部出現(xiàn)。 字匯表 :在文法中,由全部規(guī)則的左部和 右部中的所有符號組成的符號集。 非終結(jié)符 :文法中出現(xiàn)在規(guī)則左