版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
詞法分析器1《編譯原理》上機(jī)作業(yè)(1)一、上機(jī)作業(yè)的目的2通過做上機(jī)題加深對編譯器構(gòu)造原理和方法的理解,鞏固所學(xué)知識(shí)。<1>會(huì)用正規(guī)式和產(chǎn)生式設(shè)計(jì)簡單語言的語法;<2>會(huì)用遞歸下降子程序編寫編譯器或解釋器;<3>會(huì)寫上機(jī)報(bào)告。二、上機(jī)題目-簡單函數(shù)繪圖語言的解釋器2.1題目簡述<1>實(shí)現(xiàn)簡單函數(shù)繪圖的語句循環(huán)繪圖(FOR-DRAW)比例設(shè)置(SCALE)角度旋轉(zhuǎn)(ROT)
坐標(biāo)平移(ORIGIN)注釋
(--
或//)<2>屏幕(窗口)的坐標(biāo)系左上角為原點(diǎn)x方向從左向右增長y方向從上到下增長(與一般的坐標(biāo)系方向相反)<3>函數(shù)繪圖源程序舉例3---------------函數(shù)f(t)=t的圖形origin
is
(100,
300);rot
is
0;scale
is
(1,
1);--設(shè)置原點(diǎn)的偏移量--設(shè)置旋轉(zhuǎn)角度(不旋轉(zhuǎn))--設(shè)置橫坐標(biāo)和縱坐標(biāo)的比例for
T
from
0
to
200
step
1
draw
(t,
0);--橫坐標(biāo)的軌跡(縱坐標(biāo)為0)for
T
from
0
to
150
step
1
draw
(0,-t);--縱坐標(biāo)的軌跡(橫坐標(biāo)為0)for
T
from
0
to
120
step
1
draw
(t,-t);--函數(shù)f(t)=t的軌跡默認(rèn)值:origin
is
(0,
0)rot
is
0;scale
is
(1,
1)語句滿足下述規(guī)定(原se則m):antics)4<1>各類語句可以按任意次序書寫,且語句以分號(hào)結(jié)尾。源程序中的語句以它們出現(xiàn)的先后順序處理。<2>ORIGIN、ROT和SCALE語句只影響其后的繪圖語句,且遵循最后出現(xiàn)的語句有效的原則。例如,若有下述ROT語句序列:ROT
IS
0.7
;ROT
IS
1.57
;則隨后的繪圖語句將按1.57而不是0.7弧度旋轉(zhuǎn)。<3>無論ORIGIN、ROT和SCALE語句的出現(xiàn)順序如何,圖形的變換順序總是:比例變換→旋轉(zhuǎn)變換→平移變換<4>語言對大小寫不敏感,例如for、For、FOR等,均被認(rèn)為是同一個(gè)保留字。<5>語句中表達(dá)式的值均為雙精度類型,旋轉(zhuǎn)角度單位為弧度且為逆時(shí)針旋轉(zhuǎn),平移單位為點(diǎn)。)語句5語法:FOR
T
FROM起點(diǎn)TO終點(diǎn)STEP步長DRAW(橫坐標(biāo),縱坐標(biāo)語義):;令T從起點(diǎn)到終點(diǎn)、每次改變一個(gè)步長,繪制出由(橫坐標(biāo),縱舉例坐:標(biāo))所規(guī)定的點(diǎn)的軌跡。說明F:OR
T
FROM
0
TO
2*PI
STEP
PI/50
DRAW
(cos(T),sin(T));語句的作用是令T從0到2*PI、步長PI/50,繪制出各個(gè)點(diǎn)的坐注意標(biāo):(cos(T),sin(T)),即一個(gè)單位園。由于繪圖系統(tǒng)的默認(rèn)值是ORIGIN
IS
(0,0);ROT
IS
0;SCALE
IS
(1,
1);所以實(shí)際繪制出的圖形是在屏幕左上角的一個(gè)點(diǎn)。2.2.2比例設(shè)置(SCALE)語句6語法:SCALE
IS(橫坐標(biāo)比例因子,縱坐標(biāo)比例因子);語義:設(shè)置橫坐標(biāo)和縱坐標(biāo)的比例,并分別按照比例因子進(jìn)行縮放。舉例:SCALE
IS
(100,100);說明:將橫坐標(biāo)和縱坐標(biāo)的比例設(shè)置為1:1,且放大100倍。若:SCALE
IS
(100,100/3);則:橫坐標(biāo)和縱坐標(biāo)的比例為3:1。2.2.3坐標(biāo)平移(ORIGIN)語句語法:ORIGIN
IS(橫坐標(biāo),縱坐標(biāo));語義:將坐標(biāo)系的原點(diǎn)平移到橫坐標(biāo)和縱坐標(biāo)規(guī)定的點(diǎn)處。舉例:ORIGIN
IS
(360,240);說明:將原點(diǎn)從(0,0)平移到(360,240)處。2.2.4角度旋轉(zhuǎn)(ROT)語句7語法:ROT
IS角度;語義:逆時(shí)針旋轉(zhuǎn)角度所規(guī)定的弧度值。具體計(jì)算公式:旋轉(zhuǎn)后X=旋轉(zhuǎn)前X*COS(角度)+旋轉(zhuǎn)前Y*SIN(角度)旋轉(zhuǎn)后Y=旋轉(zhuǎn)前Y*COS(角度)-旋轉(zhuǎn)前X*SIN(角度舉例:)說明:ROT
IS
PI/2;逆時(shí)針旋轉(zhuǎn)PI/2,即逆時(shí)針旋轉(zhuǎn)90度。2.2.5注釋語句注釋的作用:便于理解;屏蔽暫時(shí)不需要的語句。語法: //
This
is
a
comment
line或--此行是注釋語義:
//
或--
之后,直到行尾,均是注釋語句功能的測試ORIGIN
IS
(360,
240);SCALE
IS
(100,
100);SCALE
IS
(100,
100/3);//(1)原點(diǎn)移至(360,240)//(2)圖形放大100//(3)縱坐標(biāo)縮小為三分之一ROT
IS
PI/2;
//(4)逆時(shí)針旋轉(zhuǎn)90度--繪制園的軌跡FOR
T
FROM
0
TO
2*PI
STEP
PI/50
DRAW
(cos(T),
sin(T));僅(1)和(2)加入(3)加入(4)8其他函數(shù)圖形:看實(shí)例92.3記號(hào)的語法和語義10記號(hào)的種類:常數(shù)、參數(shù)、函數(shù)、保留字、運(yùn)算符、分隔符<1>常數(shù)常數(shù)字面量和標(biāo)識(shí)符形式的常量名均稱為常數(shù)。字面量的形式為普通的數(shù)值,如果沒有小數(shù)部分,可以省略小數(shù)點(diǎn)。例如2、2.、2.0都是合法的常數(shù)。標(biāo)識(shí)符PI、E也是常數(shù),它們分別代表圓周率和自然對數(shù)的底。常數(shù)不能有符號(hào)位,如-<12和>參+2數(shù)不是常數(shù)而是(一元運(yùn)算的)表達(dá)式。本作圖語言中唯一的、已經(jīng)被定義好的變量名T被稱為參數(shù),它也是一個(gè)表達(dá)式。由于作圖語言中只有這唯一的變量,因此作圖語言中無需變量或參數(shù)的聲明和定義語句。<3>函數(shù)(調(diào)用)為簡單起見,當(dāng)前的函數(shù)僅支持正弦函數(shù)Sin,余弦函數(shù)Cos,正切函數(shù)Tan,算術(shù)平方根函數(shù)Sqrt以及指數(shù)函數(shù)Exp和對數(shù)函數(shù)Ln。有興趣的同學(xué)可以再加入其他函數(shù)。2.3記號(hào)的語法和語義(續(xù))11<4>保留字語句中具有固定含義的標(biāo)識(shí)符,包括:ORIGIN,
SCALE,
ROT,
IS,
TO,STEP,
DRAW,
FOR,
FROM<5>運(yùn)算符PLUS,
MINUS,
MUL,即:
+
-
*<6>分隔符DIV,
POWER/
**R_BRACKET,SEMICO,
L_BRACKET,COMMA即:
;
(
),三、題目與要求12題目:為函數(shù)繪圖語言編寫一個(gè)解釋器解釋器接受用繪圖語言編寫的源程序,經(jīng)語法和語義分析之后,將源程序所規(guī)定的圖形顯示在顯示屏(或窗口)中。目的:通過自己動(dòng)手編寫解釋器,掌握語言翻譯特別是語言識(shí)別的基本方法。3.1解釋器的實(shí)現(xiàn)方法用某種程序設(shè)計(jì)語言(如C/C++、Pascal、Java等)和遞歸下降子程序方法編寫完整的解釋器,由于環(huán)境限制,本書統(tǒng)一采用C/C++程序設(shè)計(jì)語言;利用編譯器編寫工具LEX/YACC提供的方式規(guī)定繪圖語言的詞法和語法,用C/C++語言編寫解釋器的語義。3.1解釋器的實(shí)現(xiàn)方法兩種方法的語義部分基本相同,主要區(qū)別在于詞法和語法分析器的構(gòu)造是手工完成還是借助于工具完成。133.3任務(wù)劃分與上機(jī)報(bào)告14任務(wù)劃分:(三個(gè)階段)詞法分析器、語法分析器、語義分析器機(jī)時(shí)比例(大概):2:3:3要求:驗(yàn)收經(jīng)過測試的程序提交上機(jī)報(bào)告。其中上機(jī)報(bào)告可以包括以下內(nèi)容:<1>任務(wù)與目的<2>軟件設(shè)計(jì)軟件的總體結(jié)構(gòu)與模塊劃分關(guān)鍵算法與重要數(shù)據(jù)結(jié)構(gòu)<3>測試?yán)淘O(shè)計(jì)與測試結(jié)果分析<4>總結(jié)、體會(huì)、改進(jìn)建議等工作方法建議:每個(gè)階段均進(jìn)行設(shè)計(jì)與測試,并且寫出報(bào)告;采用增量式設(shè)計(jì);工作全部完成后將三個(gè)階段的工作進(jìn)行總結(jié)即可。決方案步驟4:.正1規(guī)詞式-法NFA分-DF析A-最器小的DFA-構(gòu)編寫造程序-測試記號(hào)的設(shè)計(jì)<1>詞法分析器的三個(gè)任務(wù):濾掉源程序中的無用成分;輸出記號(hào)供語法分析器使用;識(shí)別非法輸入,并將其標(biāo)記為“出錯(cuò)記號(hào)”。<2>記號(hào)的組成:記號(hào)的類別和屬性。<3>記號(hào)的數(shù)據(jù)結(jié)構(gòu):struct
Token
//記號(hào)的數(shù)據(jù)結(jié)構(gòu){
Token_Type
type;
//類別char
*
lexeme;//屬性,原始輸入的字符串double
value;
//屬性,若記號(hào)是常數(shù)則是常數(shù)的值double
(*
FuncPtr)(double);//屬性,若記號(hào)是函數(shù)則15
是函數(shù)指4.1詞法分析器的構(gòu)造(續(xù)1)16<4>函數(shù)繪圖語言中記號(hào)的分類與表示enum
Token_Type{
ORIGIN,
SCALE,
ROT,
IS,//記號(hào)的類別//保留字(一字一碼)};TO,STEP,DRAW,FOR,FROM,//保留字T,
//參數(shù)SEMICO,
L_BRACKET,
R_BRACKET,
COMMA,//
分隔符PLUS,
MINUS,
MUL,
DIV,
POWER,
//
運(yùn)算符FUNC,CONST_ID,NONTOKEN,ERRTOKEN//函數(shù)//常數(shù)//空記號(hào)(源程序結(jié)束)//出錯(cuò)記號(hào)(非法輸入)4.1.2模式的正規(guī)式表示17letterdigit=
[a-zA-Z]=
[0-9]COMMENT =
"http://"|"--"WHITE_SPACE=
";"=
"("=
")"=
","=
"+"=
"-"=
"*"=
"/"=
"**"SEMICOL_BRACKETR_BRACKETCOMMAPLUSMINUS
MULDIVPOWERCONST_IDID=
digit+("."
digit*)?=
letter+由于是手工構(gòu)造詞法分析器,而正規(guī)式個(gè)數(shù)越少越便于程序的編寫,因此設(shè)計(jì)上采用相同模式的記號(hào)共用一個(gè)正規(guī)式的方法。=(""|\t|\n)+常數(shù)的字面量部分設(shè)計(jì)為CONST_ID,而常量名則合并到ID中。這就帶來一個(gè)問題,函數(shù)繪圖語言中的保留字、常量名、參數(shù)名、以及函數(shù)名均被描述為ID,當(dāng)識(shí)別出ID時(shí),如何再細(xì)分它們?static
Token
TokenTab[]
=3.1415926,NULL}{
{CONST_ID,
"PI",,NULL},4.1.3區(qū)分記號(hào)的預(yù)先符定義號(hào)且內(nèi)表容不變的符號(hào)表更多被習(xí)慣地稱為字典。{T,
"T",0.0,NULL},"SIN",
2.718280,.0,sin"COS",0.0,{CFOUNSCT,_ID,
"E",},{FUNC,cos},{FUNC,"TAN",{ORIGINt,an},
"ORIGIN",0.0,"SLCNA"L,E",00..00,,0.0,NULL},NlUogLL},"ROT","EXP",0.0,eNxULL},{SFCUANLCE,,},{RFOUTN,C,p},{IFSU,NC,"IS","SQRT",{FOR,
sqrt},"FOR",0.0,0.0,0.0,NULL},NULL},{FROM,
"FROM",0.0,
18例2.2語句ROT
IS
PI/6的記號(hào)流19<ROT"ROT"0.0NULL><IS"IS"0.0NULL><CONST_ID"PI"3.141593NULL><DIV"/"0.0NULL><CONST_ID"6"6.0NULL>4.1.4正規(guī)式的DFAletterdigit=
[a-zA-Z]=
[0-9]ID =
letter+CONST_IDPOWERCOMMENTSEMICO=
digit+("."
digit*)?=
"**"=
"http://"|"--"=
";"L_BRACKETR_BRACKET=
"("=
")"COMMAPLUSMINUS=
","=
"+"=
"-"MUL =
"*"D注IV意:W=HI"T/E“_SPACE(白空)沒有在DFA中。
WHITE_S如PA何CE處=理("白"|空\t?|\n)+204.1.5詞法分析器的程序框架struct
Token
token={ERRTOKEN,“”,0.0,NULL};//用于返回記號(hào)cthoakren=.GletxCehmaer(=)T;okenBuffer;//從記源號(hào)文的件字中符讀指取針一指個(gè)向字符緩沖區(qū)……
//空格、TAB、回車等字符的過濾AddInTokenString
(char);
//將讀入的字符放進(jìn)緩沖區(qū)TokenBuffer中if
(isalpha(char)){……}
//識(shí)別IDelse
if
(isdigit(char)){……}//識(shí)別數(shù)字常量else{
switch(char){ case
‘;’:
token.type
=
SEMICO;return
token;……}}21<1>詞法分析的器的接測口試#include
"scanner.h"void
main(int
argc,
char
*argv[]){
Token
token;if
(argc<2)
{
printf("please
input
Source
File
!\n"
);
returnif
(!InitScanner(argv[1]))
//初始化詞法分析器{
printf("Open
Source
File
Error
!
\n");
return;
}printf("記號(hào)類別
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《室性早搏導(dǎo)管消融》課件
- 會(huì)博通10單用戶版用戶操作指引
- 《動(dòng)物防疫法》考試題庫100題(含答案)
- 蜂窩微納孔、量子單層石墨烯面料技改項(xiàng)目可行性研究報(bào)告寫作模板-申批備案
- 2025年河北女子職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 專題06 發(fā)展與合作-(解析版)
- 2025年昭通衛(wèi)生職業(yè)學(xué)院高職單招高職單招英語2016-2024歷年頻考點(diǎn)試題含答案解析
- 《醫(yī)療器械法規(guī)培訓(xùn)》課件
- 2025年春節(jié)消費(fèi)機(jī)遇和備貨建議報(bào)告
- 中班區(qū)域活動(dòng)計(jì)劃實(shí)施方案五篇
- 安全生產(chǎn)網(wǎng)格員培訓(xùn)
- 小學(xué)數(shù)學(xué)分?jǐn)?shù)四則混合運(yùn)算300題帶答案
- 2024年交管12123學(xué)法減分考試題庫和答案
- 臨床下肢深靜脈血栓的預(yù)防和護(hù)理新進(jìn)展
- 動(dòng)物生產(chǎn)與流通環(huán)節(jié)檢疫(動(dòng)物防疫檢疫課件)
- 2024年山東泰安市泰山財(cái)金投資集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 英語主語從句省公開課一等獎(jiǎng)全國示范課微課金獎(jiǎng)?wù)n件
- C139客戶開發(fā)管理模型
- 年度工作總結(jié)與計(jì)劃會(huì)議
- 醫(yī)保按病種分值付費(fèi)(DIP)院內(nèi)培訓(xùn)
- 近五年重慶中考物理試題及答案2023
評論
0/150
提交評論