【正文】
::=bZ)=。 若對于某非終止符號有 n條規(guī)則(即有 n 個候選式)的處理方法: 對于文法,有 A::=x1|x2|? |xn,其右部的 n個候選式的首 符號集均不相同 : 即 First(xi) ∩ First(xj)=? (i?j),對于待分析的符號串,如果最左的非終結(jié)符號為 A,若其句子中對應(yīng)的下一個符號(當(dāng)前輸入符號)為 a,且有a?First(xk),則選擇規(guī)則 A::=xk 來作為推導(dǎo)的候選式。 方法: 首先對文法的每個規(guī)則 A::=? 求可選集 Select(A::=?)。 例:設(shè)有文法 G[N]和符號串 25 N N::=D|ND D::=0|1|2|?|9 根據(jù)文法有: N?ND?DD?2D?25; 因此我們說 25 符合此文法 圖 1 G[N]過程分析 自頂向下分析的難點及解決辦法: N D D 5 2 第 3 頁 共 22 頁 對于形如 :U::=x1|x2|? |xn 的規(guī)則 ,可能需要對所有的規(guī)則都要試探。 自頂向下分析 對于文法 G[Z],給頂一個待分析的句子 (字符串 ),自頂向下分析的基本思想是從識別符號 Z 開始,根據(jù)文法試著建立一個推導(dǎo)序列,若得到所給的句子,則句子得到識別,表明其結(jié)構(gòu)符合文法,如果經(jīng)過各種推導(dǎo)都不能得到所分析的句子,則該符號串不符合文法。 Select 集 :可選集。 First 集 :首符號集。 遞歸定義 :在定義某種事物時又用到其本身。 終結(jié)符 :文法中凡不屬于非終結(jié)符集的符號,它們組成的集合稱為終結(jié)符集。 字匯表 :在文法中,由全部規(guī)則的左部和 右部中的所有符號組成的符號集。運用符號“ |”把相同左部的規(guī)則縮寫在一起,這樣顯得文法更為緊湊。規(guī)則又稱為產(chǎn)生式。由若干條規(guī)則組成。 句子的分析 :句子的分析實際就是分析源程序中的語句是否符合 給定的文法。本軟件的主要任務(wù)就是利用程序來完成算法的上述相關(guān)過程,節(jié)約教學(xué)時間。這些過程往往需要占用大量時間來分析、制表等。編譯程序一般由詞法分析程序、語法分析程序、語義分析程序 、中間代碼生成程序、目標(biāo)代碼生成程序、代碼優(yōu)化程序、表格管理程序和出錯處理程序等成分構(gòu)成。 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 參考文獻 .............................................................. XVI0 致 謝 ............................................................... XVII1 聲 明 .............................................................. XVIII2 第 1 頁 共 22 頁 1 引言 項目背景 編譯原理是計算機專業(yè)中最難的一門課程 ,在理論上它要求學(xué)生掌握有關(guān)形勢語言和自動機的抽象概念 ,在技術(shù)上要求學(xué)生能夠熟練地利用各種數(shù)據(jù)結(jié)構(gòu)進行編程。 grammar analysis。所謂 LL(1)分析法是指語法分析是按自左至右的順序向前查看一個輸入字符串,并分析過程中產(chǎn)生句子的最左推導(dǎo) 。本軟件的主要任務(wù)就是利用程序來完成算法的上述相關(guān)過程,以達到高效,直觀的效果。 學(xué)位論文 一個編譯原理語法分析器的實現(xiàn)與設(shè)計 論文作者姓名: 申請學(xué)位專業(yè): 申請學(xué)位類別: 指導(dǎo)教師姓名(職稱): 論文提交日期: 一個編譯原理語法分析器的實現(xiàn)與設(shè)計 摘 要 編譯程序一般由詞法分析程序、語法分析程序、語義分析程序、中間代碼生成程序、目標(biāo)代碼生成程序、代碼優(yōu)化程序、表格管理程序和出錯處理程序等成分構(gòu)成。 在編譯原理的教學(xué)過程中,算法的講解都需要對算法進行詳細(xì)的分析,包括算法條件的判斷,文法分析表的構(gòu)造過程,文法分析表的具體生成,針對文法的句子的分析過程等, 這些過程往往需要占用大量時間來分析、制表等。 本文旨在介紹語法分析方法中的一種自上而下的分析方法 —— LL(1)分析法。 關(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 i