4西安電子科技大學《編譯原理》

上傳人:fgh****35 文檔編號:248188141 上傳時間:2024-10-22 格式:PPT 頁數(shù):22 大?。?72.50KB
收藏 版權(quán)申訴 舉報 下載
4西安電子科技大學《編譯原理》_第1頁
第1頁 / 共22頁
4西安電子科技大學《編譯原理》_第2頁
第2頁 / 共22頁
4西安電子科技大學《編譯原理》_第3頁
第3頁 / 共22頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《4西安電子科技大學《編譯原理》》由會員分享,可在線閱讀,更多相關(guān)《4西安電子科技大學《編譯原理》(22頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,上機作業(yè),一、上機作業(yè)的目的,通過做上機題加深對編譯器構(gòu)造原理和方法的理解,鞏固所學知識。,會用正規(guī)式和產(chǎn)生式設計簡單語言的語法;,會用遞歸下降子程序編寫編譯器或解釋器;,會寫上機報告。,二、上機題目簡單的函數(shù)繪圖語言,2.1 題目簡述,實現(xiàn)簡單函數(shù)繪圖的語句,循環(huán)繪圖(,FOR-DRAW,),比例設置(,SCALE,),角度旋轉(zhuǎn)(,ROT,),坐標平移(,ORIGIN,),注釋 (-或/),屏幕(窗口)的坐標系,左上角為原點,x,方向從左向右增長,y,方向從上到下增長(與一般的坐標系方向相反),1,函數(shù)繪

2、圖源程序舉例,-函數(shù),f(t)=t,的圖形,origin is(100,300);-,設置原點的偏移量,rot is 0;-,設置旋轉(zhuǎn)角度(不旋轉(zhuǎn)),scale is(1,1);-,設置橫坐標和縱坐標的比例,for T from 0 to 200 step 1 draw(t,0);,-,橫坐標的軌跡(縱坐標為0),for T from 0 to 150 step 1 draw(0,-t);,-,縱坐標的軌跡(橫坐標為0),for T from 0 to 120 step 1 draw(t,-t);,-,函數(shù),f(t)=t,的軌跡,默認值:,origin is(0,0),rot is 0;,sc

3、ale is(1,1),2,2.2 語句的語法和語義,語句滿足下述規(guī)定(原則):,各類語句可以按任意次序書寫,且語句以分號結(jié)尾。源程序中的語句以它們出現(xiàn)的先后順序處理。,ORIGIN、ROT,和,SCALE,語句只影響其后的繪圖語句,且遵循最后出現(xiàn)的語句有效的原則。例如,若有下述,ROT,語句序列:,ROT IS 0.7;,ROT IS 1.57;,則隨后的繪圖語句將按1.57而不是0.7弧度旋轉(zhuǎn)。,無論,ORIGIN、ROT,和,SCALE,語句的出現(xiàn)順序如何,圖形的變換順序總是:,比例變換旋轉(zhuǎn)變換平移變換,語言對大小寫不敏感,例如,for、For、FOR,等,均被認為是同一個保留字。,語句

4、中表達式的值均為雙精度類型,旋轉(zhuǎn)角度單位為弧度且為逆時針旋轉(zhuǎn),平移單位為點。,3,2.2.1 循環(huán)繪圖(,FOR-DRAW,),語句,語法:,語義:,舉例:,說明:,注意:,FOR T FROM,起點,TO,終點,STEP,步長,DRAW,(,橫坐標,縱坐標,);,令,T,從,起點,到,終點,、,每次改變一個,步長,,,繪制出由(,橫坐標,,,縱坐標,)所規(guī)定的點的軌跡。,FOR T FROM 0 TO 2*PI STEP PI/50 DRAW(,cos,(T),sin(T);,該語句的作用是令,T,從0到2*,PI、,步長,PI/50,,繪制出各個點的坐標(,cos,(T),sin(T),,

5、即一個單位園。,由于繪圖系統(tǒng)的默認值是,ORIGIN IS(0,0);,ROT IS 0;,SCALE IS(1,1);,所以實際繪制出的圖形是在屏幕左上角的一個點。,4,2.2.2 比例設置(,SCALE,),語句,語法:,語義:,舉例:,說明:,SCALE IS(,橫坐標比例因子,縱坐標比例因子,);,設置橫坐標和縱坐標的比例,并分別按照比例因子進行縮放。,SCALE IS(100,100);,將橫坐標和縱坐標的比例設置為1:1,且放大100倍。,語法:,語義:,舉例:,說明:,2.2.3 坐標平移(,ORIGIN,),語句,ORIGIN IS,(,橫坐標,縱坐標);,將坐標系的原點平移到

6、橫坐標和縱坐標規(guī)定的點處。,ORIGIN IS(360,240);,將原點從,(0,0),平移到,(360,240),處。,若:,SCALE IS(100,100/3);,則:,橫坐標和縱坐標的比例為,3:1,。,5,2.2.4 角度旋轉(zhuǎn)(,ROT,),語句,語法:,語義:,舉例:,說明:,ROT IS,角度;,逆時針旋轉(zhuǎn)角度所規(guī)定的弧度值。具體計算公式:,旋轉(zhuǎn)后,X,=,旋轉(zhuǎn)前,X*COS,(,角度)+旋轉(zhuǎn)前,Y*SIN,(,角度),旋轉(zhuǎn)后,Y,=,旋轉(zhuǎn)前,Y*COS,(,角度)-旋轉(zhuǎn)前,X*SIN,(,角度),公式的推導可參閱輔助教材58頁。,ROT IS PI/2;,逆時針旋轉(zhuǎn),PI/2

7、,,,即,逆時針旋轉(zhuǎn)90度。,2.2.5 注釋語句,注釋的作用:,語法:,語義:,便于理解;,屏蔽暫時不需要的語句。,/,This is a comment line,或 -此行是注釋,/或-之后,直到行尾,均是注釋,6,語句功能的測試,ORIGIN IS(360,240);,/(1),原點移至(360,240),SCALE IS(100,100);,/(2),圖形放大100,SCALE IS(100,100/3);,/(3),縱坐標縮小為三分之一,ROT IS PI/2;,/(4),逆時針旋轉(zhuǎn)90度,-繪制園的軌跡,FOR T FROM 0 TO 2*PI STEP PI/50 DRAW(,

8、cos,(T),sin(T);,僅(1)和(2),加入(3),加入(4),7,其他函數(shù)圖形:,8,2.3 記號的語法和語義,記號的種類:,常數(shù),參數(shù),函數(shù)(調(diào)用),常數(shù)、參數(shù)、函數(shù)、保留字、運算符、分隔符,常數(shù)字面量,和標識符形式的,常量名,均稱為常數(shù)。字面量的形式為普通的數(shù)值,如果沒有小數(shù)部分,可以省略小數(shù)點。例如,2、2.、2.0,都是合法的常數(shù)。標識符,PI、E,也是常數(shù),它們分別代表圓周率和自然對數(shù)的底。常數(shù)不能有符號位,如,-1,和,+2,不是常數(shù)而是(一元運算的)表達式。,本作圖語言中唯一的、已經(jīng)被定義好的,變量名,T,被稱為參數(shù),,它也是一個表達式。由于作圖語言中只有這唯一的變量

9、,因此作圖語言中無需變量或參數(shù)的聲明和定義語句。,為簡單起見,當前的函數(shù)僅支持正弦函數(shù),Sin,,,余弦函數(shù),Cos,,,正切函數(shù),Tan,,,算術(shù)平方根函數(shù),Sqrt,以及指數(shù)函數(shù),Exp,和對數(shù)函數(shù),Ln,。,有興趣的同學可以再加入其他函數(shù)。,9,2.3 記號的語法和語義(續(xù)),保留字,運算符,分隔符,語句中具有固定含義的標識符,包括:,ORIGIN,SCALE,ROT,IS,TO,STEP,DRAW,FOR,FROM,PLUS,MINUS,MUL,DIV,POWER,即:,+-*/*,SEMICO,L_BRACKET,R_BRACKET,COMMA,即:,;(),10,三、題目與要求,用

10、某種程序設計語言(如,C/C+、Pascal、Java,等)和遞歸下降子程序方法編寫完整的解釋器,由于環(huán)境限制,本書統(tǒng)一采用,C/C+,程序設計語言;,利用編譯器編寫工具,LEX/YACC,提供的方式規(guī)定繪圖語言的詞法和語法,用,C/C+,語言編寫解釋器的語義。,兩種方法的語義部分基本相同,主要區(qū)別在于詞法和語法分析器的構(gòu)造是手工完成還是借助于工具完成。,3.1 解釋器的實現(xiàn)方法,題目:,為函數(shù)繪圖語言編寫一個解釋器,解釋器接受用繪圖語言編寫的源程序,經(jīng)過語法和語義分析之后,將源程序所規(guī)定的圖形顯示在顯示屏(或顯示窗口)上,目的:,通過自己動手編寫解釋器,掌握語言翻譯特別是語言識別的基本方法,

11、11,3.1 解釋器的實現(xiàn)方法,兩種方法的語義部分基本相同,主要區(qū)別在于詞法和語法分析器的構(gòu)造是手工完成還是借助于工具完成。,12,3.3 任務劃分與上機報告,任務劃分:(三個階段),詞法分析器,語法分析器,語義分析器,機時比例(大概):,2:2:2,要求:,驗收,經(jīng)過測試的程序,提交上機報告。其中上機報告可以包括以下內(nèi)容:,任務與目的,軟件設計,a.,軟件的總體結(jié)構(gòu)與模塊劃分,b.,關(guān)鍵算法與重要數(shù)據(jù)結(jié)構(gòu),測試例程設計與測試結(jié)果分析,總結(jié)、體會、改進建議等,工作方法建議:,每個階段均進行設計與測試,并且寫出報告;采用增量式設計;工作全部完成后將三個階段的工作進行總結(jié)即可。,13,四、遞歸子程

12、序方法的參考解決方案,4.1詞法分析器的構(gòu)造,詞法分析器的構(gòu)造步驟:,正規(guī)式,NFADFA,最小,DFA,編寫程序測試,4.1.1 記號的設計,詞法分析器的三個任務:,1,濾掉源程序中的無用成分;,2輸出記號供語法分析器使用;,3識別非法輸入,并將其標記為“出錯記號”。,記號的組成:記號的,類別,和,屬性,。,記號的數(shù)據(jù)結(jié)構(gòu):,struct,Token,/,記號的數(shù)據(jù)結(jié)構(gòu),Token_Type,type;/,類別,char*lexeme;/,屬性,原始輸入的字符串,double value;/,屬性,若記號是常數(shù)則是常數(shù)的值,double(*,FuncPtr,)(double);,/,屬性,若

13、記號是函數(shù)則是函數(shù)的指針,;,14,4.1詞法分析器的構(gòu)造(續(xù)1),函數(shù)繪圖語言中記號的分類與表示,enum,Token_Type,/,記號的類別,ORIGIN,SCALE,ROT,IS,/,保留字(一字一碼),TO,STEP,DRAW,FOR,FROM,/,保留字,T,/,參數(shù),SEMICO,L_BRACKET,R_BRACKET,COMMA,/,分隔符,PLUS,MINUS,MUL,DIV,POWER,/,運算符,FUNC,/,函數(shù),CONST_ID,/,常數(shù),NONTOKEN,/,空記號(源程序結(jié)束),ERRTOKEN,/,出錯記號(非法輸入),;,15,4.1.2 模式的正規(guī)式表示,l

14、etter=a-,zA,-Z,digit=0-9,COMMENT =/|-,WHITE_SPACE=(|t|n),+,SEMICO =;,L_BRACKET=(,R_BRACKET=),COMMA =,PLUS =+,MINUS =-,MUL =*,DIV =/,POWER =*,CONST_ID =digit,+,(.digit,*,)?,ID =letter,+,(letter|digit),*,由于是手工構(gòu)造詞法分析器,而正規(guī)式個數(shù)越少越便于程序的編寫,因此設計上采用相同模式的記號共用一個正規(guī)式的方法。,常數(shù)的字面量部分設計為,CONST_ID,,,而常量名則合并到,ID,中。,這就帶來

15、一個問題,函數(shù)繪圖語言中的保留字、常量名、參數(shù)名、以及函數(shù)名均被描述為,ID,,,當識別出,ID,時,如何再細分它們?,16,4.1.3 區(qū)分記號的符號表,static Token,TokenTab,=,CONST_ID,PI,3.1415926,NULL,CONST_ID,E,2.71828,NULL,T,T,0.0,NULL,FUNC,SIN,0.0,sin,FUNC,COS,0.0,cos,FUNC,TAN,0.0,tan,FUNC,LN,0.0,log,FUNC,EXP,0.0,exp,FUNC,SQRT,0.0,sqrt,ORIGIN,ORIGIN,0.0,NULL,SCALE,SC

16、ALE,0.0,NULL,ROT,ROT,0.0,NULL,IS,IS,0.0,NULL,FOR,FOR,0.0,NULL,FROM,FROM,0.0,NULL,TO,TO,0.0,NULL,STEP,STEP,0.0,NULL,DRAW,DRAW,0.0,NULL,;,預先定義且內(nèi)容不變的符號表更多被習慣地稱為,字典,。,17,例2.2,語句,ROT IS PI/6,的記號流,18,4.1.4 正規(guī)式的,DFA,letter=a-,zA,-Z,digit=0-9,COMMENT =/|-,WHITE_SPACE=(|t|n),+,SEMICO =;,L_BRACKET =(,R_BRACKET =),COMMA =,PLUS =+,MINUS =-,MUL =*,DIV =/,POWER =*,CONST_ID =digit+(.digit*)?,ID =letter+(letter|digit),*,注意:,WHITE_SPACE,(,白空)沒有在,DFA,中。,如何處理白空?,19,4.1.5 詞法分析器的程序框架,struct,Token token=ERRTOKEN,“,”,

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!