




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、編譯技術(shù)實(shí)驗(yàn)一實(shí)驗(yàn)報(bào)告詞法分析實(shí)驗(yàn)報(bào)告目錄目錄21 實(shí)驗(yàn)?zāi)康?2 實(shí)驗(yàn)內(nèi)容32.1 TINY計(jì)算機(jī)語言描述32.2 實(shí)驗(yàn)要求33 此法分析器的程序?qū)崿F(xiàn)43.1 狀態(tài)轉(zhuǎn)換圖43.2 程序源碼53.3 實(shí)驗(yàn)運(yùn)行效果截圖104 實(shí)驗(yàn)體會(huì)101 實(shí)驗(yàn)?zāi)康?、學(xué)會(huì)針對(duì)DFA轉(zhuǎn)換圖實(shí)現(xiàn)相應(yīng)的高級(jí)語言源程序。2、深刻領(lǐng)會(huì)狀態(tài)轉(zhuǎn)換圖的含義,逐步理解有限自動(dòng)機(jī)。3、掌握手工生成詞法分析器的方法,了解詞法分析器的內(nèi)部工作原理。2 實(shí)驗(yàn)內(nèi)容2.1 TINY計(jì)算機(jī)語言描述TINY計(jì)算機(jī)語言的編譯程序的詞法分析部分實(shí)現(xiàn)。從左到右掃描每行該語言源程序的符號(hào),拼成單詞,換成統(tǒng)一的內(nèi)部表示(token)送給語法分析程序。為了
2、簡(jiǎn)化程序的編寫,有具體的要求如下:1、數(shù)僅僅是整數(shù)。2、空白符僅僅是空格、回車符、制表符。3、代碼是自由格式。4、注釋應(yīng)放在花括號(hào)之內(nèi),并且不允許嵌套語言的單詞保留字特殊符號(hào)其他if+標(biāo)識(shí)符(一個(gè)或更多的字母)then-else*end/repeat=數(shù)(一個(gè)或更多的數(shù)字)untilreadwrite;2.2 實(shí)驗(yàn)要求l 要求實(shí)現(xiàn)編譯器的以下功能1、按規(guī)則拼單詞,并轉(zhuǎn)換成二元式形式2、刪除注釋行3、刪除空白符 (空格、回車符、制表符)4、列表打印源程序,按照源程序的行打印,在每行的前面加上行號(hào),并且打印出每行包含的記號(hào)的二元形式5、發(fā)現(xiàn)并定位錯(cuò)誤l 詞法分析進(jìn)行具體的要求1、記號(hào)的二元式形式中
3、種類采用枚舉方法定義;其中保留字和特殊字符是每個(gè)都一個(gè)種類,標(biāo)示符自己是一類,數(shù)字是一類;單詞的屬性就是表示的字符串值。2、詞法分析的具體功能實(shí)現(xiàn)是一個(gè)函數(shù)GetToken(),每次調(diào)用都對(duì)剩余的字符串分析得到一個(gè)單詞或記號(hào)識(shí)別其種類,收集該記號(hào)的符號(hào)串屬性,當(dāng)識(shí)別一個(gè)單詞完畢,采用返回值的形式返回符號(hào)的種類,同時(shí)采用程序變量的形式提供當(dāng)前識(shí)別出記號(hào)的屬性值。這樣配合語法分析程序的分析需要的記號(hào)及其屬性,生成一個(gè)語法樹。3、標(biāo)示符和保留字的詞法構(gòu)成相同,為了更好的實(shí)現(xiàn),把語言的保留字建立一個(gè)表格存儲(chǔ),這樣可以把保留字的識(shí)別放在標(biāo)示符之后,用識(shí)別出的標(biāo)示符對(duì)比該表格,如果存在該表格中則是保留字,
4、否則是一般標(biāo)示符。 3 此法分析器的程序?qū)崿F(xiàn)3.1 狀態(tài)轉(zhuǎn)換圖圖1 TINY語言的確定有限自動(dòng)機(jī)(DFA)3.2 程序源碼#includeusing namespace std;#include#include#includeclass CApublic:void getToken(); /識(shí)別標(biāo)識(shí)符void preDo(char ); /預(yù)處理源程序void display(); /打印出CA()m=n=0;private:long count2;char ID1010; /符號(hào)表int m; /設(shè)m為符號(hào)表中已有的標(biāo)識(shí)符的個(gè)數(shù)char Cons1010; /常數(shù)表int n; /設(shè)n為常數(shù)
5、表中已有的常數(shù)的個(gè)數(shù)char buffer199999;bool isDigit(char);/檢查是否為數(shù)字bool isLetter(char);/檢查是否為字符int InsertID(char *strToken);/添加符號(hào)int InsertConst(char *strToken);/添加符號(hào)int Search(char a10,const char *,int ); /二分查找;/enum variety標(biāo)識(shí)符,數(shù)字,關(guān)鍵字1,關(guān)鍵字2,關(guān)鍵字3,關(guān)鍵字4,關(guān)鍵字5,關(guān)鍵字6,關(guān)鍵字7,關(guān)鍵字8,特殊符號(hào)1,/ 特殊符號(hào)2,特殊符號(hào)3,特殊符號(hào)4,特殊符號(hào)5,特殊符號(hào)6,特殊
6、符號(hào)7,特殊符號(hào)8,特殊符號(hào)9,特殊符號(hào)10;/關(guān)鍵字bi編碼 1 2 3 4 5 6 7 8char K1810=else,end,if,read,repeat,then,until,write,%,*,+,-,/,:,;,;bool CA:isDigit(char c)if(c=0) return true;else return false;bool CA:isLetter(char c)if(c=a&c=A&c=Z) return true;else return false;int CA:Search(char a1810,const char *b,int n) int left=
7、0;int right=n-1;int mid=0;while(left=right)mid=(left+right)/2;if(strcmp(amid,b)=0) return mid;else if(strcmp(amid,b)0) left=mid+1;else right=mid-1;return -1;int CA:InsertID(char *strToken)int i=0;while (im) /設(shè)m為符號(hào)表中已有的標(biāo)識(shí)符的個(gè)數(shù) if (!strcmp(IDi, strToken)return i;i+;strcpy(IDi,strToken);m+;return i;int
8、CA:InsertConst(char *strToken)int i=0; while (in) /設(shè)n為常數(shù)表中已有的常數(shù)的個(gè)數(shù) if (!strcmp(Consi, strToken)return i;i+;strcpy(Consi,strToken);n+;return i;void CA:display() char filename30;/輸入的時(shí)候一定要是.:/./.格式cout請(qǐng)輸入源程序代碼.cpp 文件的絕對(duì)路徑:filename;ifstream infile(filename,ios:in);if(!infile)cerropen error!endl;abort();
9、char ch;int count1=1;count2=0;cout第 count1 行 ;while(infile.get(ch) preDo(ch);coutch; /逐行打印出源程序if(ch=n)count1+;cout第 count1 行 ;buffer1count2+1=0;coutendl;/對(duì)buffer1中的字符進(jìn)行掃描getToken();infile.close();coutendl;cout符號(hào)表:;for (int i=0;im;i+)coutIDi ;coutendl;cout數(shù)字表:;for (int j=0;jn;j+)coutConsj ;coutendl;v
10、oid CA:preDo(char c) char *p=buffer1;buffer10=#; /賦#給掃描緩沖區(qū)的第一個(gè)元素count2+;*(p+count2)=c;if(buffer1count2-1=) /刪除注釋 if(c=) cout注釋不允許嵌套! ; /注釋不允許嵌套if(c!=) count2-;else count2=count2-2;else if(buffer1count2-1= &c= ) count2-; /若干相繼的空白符結(jié)合成一個(gè)if(c=r) count2-;if(c=t) count2-;void CA:getToken() int n=1;cout第1行
11、: ;for(int i=1;istrlen(buffer1);i+) if(buffer1i=n)n+;coutn第n行: ; else if(isLetter(buffer1i)string tok = ;tok +=buffer1i;while(isLetter(buffer1+i)tok +=buffer1i;int r=Search(K,tok.c_str(),8); i-;if(r!=-1)cout(關(guān)鍵字r+1,tok) ; /關(guān)鍵字編碼else cout(標(biāo)識(shí)符,tok) ; /標(biāo)識(shí)符編碼 r = InsertID(char *)tok.c_str();else if(isDi
12、git(buffer1i)string tok = ;tok +=buffer1i;while(isDigit(buffer1+i)tok +=buffer1i;int y = InsertConst(char *)tok.c_str();cout(數(shù)字,tok) ;i-; /數(shù)字編碼else if (buffer1i= ) elsestring tok = ;tok +=buffer1i;int q=Search(K,tok.c_str(),18);if(q!=-1) cout(特殊符號(hào),tok) ; else cout非法符號(hào)! ; /*main函數(shù)*/int main()CA ca;ca
13、.display();coutendl;return 0;3.3 實(shí)驗(yàn)運(yùn)行效果截圖4 實(shí)驗(yàn)體會(huì)本次實(shí)驗(yàn)是編譯技術(shù)的第一次實(shí)驗(yàn),按理說也應(yīng)該是最簡(jiǎn)單的一次實(shí)驗(yàn)驗(yàn),但是在具體的實(shí)現(xiàn)過程中還是遇到了這樣或那樣的問題,比如對(duì)原輸入串進(jìn)行分析的預(yù)處理是在注釋的嵌套判斷上出現(xiàn)了問題,調(diào)試了幾次才發(fā)現(xiàn)是出現(xiàn)注釋時(shí)計(jì)數(shù)值本來應(yīng)該減2結(jié)果減了1。類似的錯(cuò)誤還有,但好在最后都解決了。除了提升了自己的動(dòng)手能力外本次實(shí)驗(yàn)最大的收獲應(yīng)該是對(duì)詞法分析器的運(yùn)行機(jī)制有了更深入的理解了,再畫狀態(tài)轉(zhuǎn)換的過程中也激發(fā)了我的一些關(guān)于那些復(fù)雜的語言(如c+)的詞法分析器是怎樣書寫的聯(lián)想,希望在今后的學(xué)習(xí)實(shí)踐中能有更深入的學(xué)習(xí)。最后感謝
14、老師的悉心指導(dǎo),謝謝老師!七年級(jí)英語期末考試質(zhì)量分析一、試卷分析:本次試卷的難易程度定位在面向大多數(shù)學(xué)生。該份試卷緊扣教材,突出重點(diǎn),注重對(duì)基礎(chǔ)知識(shí)和基本技能的考查。二、題型分析:1單項(xiàng)選擇單項(xiàng)選擇題共15道小題,知識(shí)覆蓋面較廣,重點(diǎn)、難點(diǎn)和疑點(diǎn)比較突出,注重能力考查。考查以動(dòng)詞為主,兼顧其它詞類,并考查句法和語言點(diǎn)。考查的方式突出了語境。2完形填空文章對(duì)學(xué)生的語言理解能力和綜合運(yùn)用能力提出了較高的要求,重點(diǎn)突出了對(duì)單復(fù)數(shù)和語言點(diǎn)的考查。3閱讀理解本大題包括五篇文章,安排較合理,難度適中,既有日常生活的題材,又有表格圖片解說,符合新課程的要求,體現(xiàn)新課程的理念。根據(jù)新課程標(biāo)準(zhǔn)五級(jí)有關(guān)讀的目標(biāo)描
15、述,問題符合“能找出文章中的主題,理解故事的情節(jié)”等目標(biāo)描述。閱讀體現(xiàn)新課標(biāo)所倡導(dǎo)的任務(wù)型教學(xué)的理念。通過閱讀短文,主要考查學(xué)生根據(jù)所獲取的信息解決實(shí)際問題的能力。閱讀的難度不很大,完成任務(wù)的環(huán)節(jié)也比較簡(jiǎn)潔。4書面表達(dá)書面表達(dá)中仿寫與課本內(nèi)容有著極大的相似之處,是對(duì)教材的深加工,做到了學(xué)以致用。創(chuàng)新寫作緊扣課程標(biāo)準(zhǔn)要求,結(jié)合課程標(biāo)準(zhǔn)有關(guān)寫的目標(biāo)描述,考查了學(xué)生綜合應(yīng)用語言的能力。三、典型錯(cuò)誤分析第一大題單項(xiàng)填空中,錯(cuò)誤率較高。主要問題是對(duì)單詞沒理解透,平時(shí)講過的語法沒記住,不能靈活應(yīng)用。交際運(yùn)用失分較多,主要是課文掌握不到位。書面表達(dá)中考生的主要錯(cuò)誤有:1)在完成句子時(shí)不尊重原句的中文意思,改
16、變了句意;2)不會(huì)用英語思考,用英語表達(dá)的能力較差;3)思路不清晰。4)語言的基本功不扎實(shí),病句較多;(5)書寫習(xí)慣不好,卷面不整潔。書面表達(dá)部分中常見錯(cuò)誤形式:1時(shí)態(tài)錯(cuò)誤。a.時(shí)態(tài)混淆 b.時(shí)態(tài)前后不一致 c. 主謂不一致2. 句子結(jié)構(gòu)錯(cuò)誤。3單詞錯(cuò)誤 如:make寫成mate等。四、問題及對(duì)策(一)主要問題1、學(xué)校兩極分化明顯。因此如何有效地抑制兩極分化,對(duì)學(xué)有困難的學(xué)生的轉(zhuǎn)化提高,大面積提高英語教學(xué)質(zhì)量,對(duì)大多數(shù)學(xué)校來說,任務(wù)依然艱巨。2、基礎(chǔ)知識(shí)和基本技能不扎實(shí),學(xué)生對(duì)一些基本詞匯、語法、句型的掌握不夠熟練,也就談不上運(yùn)用了。因此,課堂教學(xué)中如何注重基礎(chǔ)知識(shí)和基本技能的合理、有效地訓(xùn)練
17、,應(yīng)引起教師的高度重視。3、學(xué)生綜合運(yùn)用語言的能力不強(qiáng),試卷中有許多試題要求學(xué)生在一定的語境中靈活運(yùn)用知識(shí)獨(dú)立解決。但考查的結(jié)果卻暴露教學(xué)中的一個(gè)薄弱環(huán)節(jié)。因此,在平時(shí)教學(xué)中如何培養(yǎng)學(xué)生綜合運(yùn)用語言的能力應(yīng)引起教師的高度重視,而不是單純地教師講語法,學(xué)生背語法。4、學(xué)生的書面表達(dá)中中國式的英語較多,拼寫錯(cuò)誤也較多,在日常教學(xué)中如何對(duì)學(xué)生進(jìn)行有效的寫的訓(xùn)練仍是教師需要考慮的問題。(二)對(duì)策及建議英語老師要更好地把握英語課程標(biāo)準(zhǔn)對(duì)日常教學(xué)的指導(dǎo)。英語測(cè)試強(qiáng)化“突出語篇,強(qiáng)調(diào)應(yīng)用,注重交際”這一原則,基礎(chǔ)知識(shí)的考查從注重語言形式轉(zhuǎn)變?yōu)樽⒅卣Z言意義,并要求在特定的語境中理解其特定的含義,在情景設(shè)計(jì)上更
18、加靈活和實(shí)用。因此教師要提高教學(xué)質(zhì)量,必須要在注重語法知識(shí)教學(xué)的同時(shí),更應(yīng)該注重增加綜合性與語境化的因素。這就要求在平時(shí)的教學(xué)中,注重語言的應(yīng)用價(jià)值。1、抓好聽力訓(xùn)練關(guān)。注重培養(yǎng)學(xué)生良好的聽、說、讀、寫的習(xí)慣,把習(xí)慣變成能力。按課程標(biāo)準(zhǔn)所規(guī)定的有關(guān)五級(jí)聽的要求,加大聽力訓(xùn)練量。在教學(xué)中不僅要培養(yǎng)學(xué)生的聽力技能技巧, 還要擴(kuò)大聽力資源,使學(xué)生能盡可能多的獲取語言輸入量,使其聽力水平逐步提高。2、要求教師在平時(shí)教學(xué)中積極創(chuàng)設(shè)情景,促進(jìn)口語交流。學(xué)習(xí)語言的目的在于正確使用語言。因此,在教學(xué)中要結(jié)合學(xué)生的實(shí)際,編寫有助于開展口語交流活動(dòng)的材料,要設(shè)法創(chuàng)設(shè)交流活動(dòng)情景,以激發(fā)學(xué)生的學(xué)習(xí)興趣,引導(dǎo)學(xué)生積極參與語言實(shí)踐活動(dòng),培養(yǎng)學(xué)生自主學(xué)習(xí)的能力。3、強(qiáng)化閱讀,正確引導(dǎo),開闊視野。隨著課程標(biāo)準(zhǔn)的實(shí)行,對(duì)學(xué)生在閱讀方面的要求越來越高。而中考對(duì)考生閱讀理解能力的考查,已由過去五個(gè)W的淺層考題過渡到找出短文主旨、推斷深層涵義、文中細(xì)節(jié)和猜詞解義,特別要注重語篇和應(yīng)用。為此
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年注會(huì)考試內(nèi)容概述試題及答案
- 行政管理師考試的重要信息來源及試題及答案
- 2024年項(xiàng)目管理模擬測(cè)試試題及答案
- 2025年國際金融理財(cái)師考試資產(chǎn)保全與增值試題及答案
- 2024年微生物檢測(cè)的法規(guī)解讀試題及答案
- 2025年國際金融理財(cái)師考試職業(yè)現(xiàn)狀試題及答案
- 惠州酒店亮化施工方案
- 2024項(xiàng)目管理執(zhí)行效果試題及答案
- 微生物檢驗(yàn)技術(shù)人員的職業(yè)發(fā)展方向試題及答案
- 整合資料2025年國際金融理財(cái)師試題及答案
- (二模)2025年深圳市高三年級(jí)第二次調(diào)研考試歷史試卷(含標(biāo)準(zhǔn)答案)
- 一年級(jí)信息技術(shù)下冊(cè) 在網(wǎng)上交流信息教學(xué)設(shè)計(jì) 清華版
- 廣西《疼痛綜合評(píng)估規(guī)范》(材料)
- 廣東省2024-2025學(xué)年佛山市普通高中教學(xué)質(zhì)量檢測(cè)政治試卷及答案(二)高三試卷(佛山二模)
- 11.1 杠桿 課件 2024-2025學(xué)年教科版物理八年級(jí)下學(xué)期
- 搶救工作制度課件
- LOGO更換普通夾板作業(yè)課件
- 2025年415全民國家安全教育日主題班會(huì)課件
- 美容師考試與法律法規(guī)相關(guān)知識(shí)及試題答案
- 山東省東營市東營區(qū)勝利第一初級(jí)中學(xué)2024-2025學(xué)年九年級(jí)下學(xué)期一模英語試卷(含答案無聽力原文及音頻)
- 臨床決策支持系統(tǒng)在路徑優(yōu)化中的實(shí)踐案例
評(píng)論
0/150
提交評(píng)論