freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

《編譯原理》課程設(shè)計(jì)教學(xué)大綱(優(yōu)秀范文5篇)(文件)

 

【正文】 些信息時(shí),我才真正了解了詞法分析的工作內(nèi)容和目標(biāo),才知道詞法分析需要完成哪些任務(wù)獲取到哪些信息。雖然之前寫(xiě)的詞法分析的代碼已經(jīng)完成了詞法分析的需求,也是根據(jù)DFA的原理編寫(xiě)的,但是在代碼結(jié)構(gòu)上卻難以體現(xiàn),在對(duì)書(shū)上的根據(jù)已知DFA寫(xiě)代碼的例子進(jìn)行了詳細(xì)的研究之后,發(fā)現(xiàn)自己的代碼并沒(méi)有像書(shū)上那樣完全按照所依據(jù)的DFA各狀態(tài)轉(zhuǎn)移的關(guān)系進(jìn)行編寫(xiě),所以對(duì)代碼進(jìn)行了重寫(xiě),像書(shū)上一樣嚴(yán)格按照狀態(tài)之間轉(zhuǎn)移的方式進(jìn)行編寫(xiě),將狀態(tài)劃分成11個(gè)狀態(tài),狀態(tài)分別按1~11進(jìn)行標(biāo)注,程序也按照DFA來(lái)編寫(xiě),也實(shí)現(xiàn)了詞法分析的功能。由于C語(yǔ)言給出的文法有左遞歸存在,于是自己將存在左遞歸的文法改寫(xiě)成EBNF的形式,并據(jù)此進(jìn)行代碼編寫(xiě)。首先最基本的成果是完成了課程設(shè)計(jì)的任務(wù),實(shí)現(xiàn)了編譯器的詞法分析和語(yǔ)法分析階段的功能,詞法分析主要能過(guò)濾注釋、分析出語(yǔ)法分析階段需要的Token并滿足語(yǔ)法階段的所有要求,能夠判別詞法分析階段是否出錯(cuò)和出錯(cuò)類型和位置。如:以前在編譯原理課上雖然知道First集合和Follow集合怎么求的,卻不知道First集合和Follow集合到底是干什么的,通過(guò)編寫(xiě)程序自己明白了他們的實(shí)際作用,使得自己不僅知其然還知其所以然,從而使得自己加深了對(duì)知識(shí)點(diǎn)的理解和掌握。[第四篇:編譯原理教學(xué)大綱(范文模版)編譯原理教學(xué)大綱一、課程的性質(zhì)、地位本課程是計(jì)算機(jī)專業(yè)的重要專業(yè)課之一,是一門(mén)理論性和實(shí)踐性較強(qiáng)的課程。二、課程的目的、任務(wù)和要求該課程的目的是讓學(xué)生掌握程序設(shè)計(jì)語(yǔ)言編譯程序構(gòu)造的一般原理、基本設(shè)計(jì)方法、主要實(shí)現(xiàn)技術(shù)和一些自動(dòng)構(gòu)造工具。四、課程內(nèi)容(建議理論課時(shí):62 上機(jī)課時(shí):18)第一章 編譯程序概論教學(xué)目的及要求:本章介紹編譯程序在計(jì)算機(jī)科學(xué)中的地位和作用,介紹編譯技術(shù)的發(fā)展歷史,講解編譯程序、解釋程序的基本概念,概述編譯過(guò)程,介紹編譯程序的邏輯結(jié)構(gòu)和編譯程序的組織形式。教學(xué)難點(diǎn):編譯的遍。教學(xué)重點(diǎn):上下文無(wú)關(guān)文法,語(yǔ)言定義。教學(xué)內(nèi)容:詞法分析的設(shè)計(jì)原理和設(shè)計(jì)方法,源程序輸入與詞法分析程序輸出、正則文法及其狀態(tài)轉(zhuǎn)換圖、確定的有限自動(dòng)機(jī)(DFA)不確定的有限自動(dòng)機(jī)(NFA)正則表達(dá)式與正規(guī)集。章節(jié)內(nèi)容詞法分析程序的設(shè)計(jì)單詞的描述工具有窮自動(dòng)機(jī)正規(guī)式和有窮自動(dòng)機(jī)的等價(jià)性正規(guī)文法和有窮自動(dòng)機(jī)間的轉(zhuǎn)換 第四章 語(yǔ)法分析—自上而下分析教學(xué)目的及要求:本章介紹編譯程序的第二個(gè)階段語(yǔ)法分析的設(shè)計(jì)方法和實(shí)現(xiàn)原理,包括自上而下分析的無(wú)回朔的遞歸下降分析、LL(1)分析法。教學(xué)難點(diǎn):LL(1)文法預(yù)測(cè)分析表構(gòu)造。教學(xué)重點(diǎn):歸約,算符優(yōu)先表構(gòu)造,LR分析法。教學(xué)內(nèi)容:語(yǔ)法制導(dǎo)翻譯的基本概念、中間代碼的形式,可執(zhí)行語(yǔ)句和說(shuō)明語(yǔ)句的語(yǔ)法制導(dǎo)翻譯方法。教學(xué)內(nèi)容:符號(hào)表的作用、建立、符號(hào)表欄目的組織、符號(hào)表上的操作。章節(jié)內(nèi)容符號(hào)表的作用和地位符號(hào)表的主要屬性及作用符號(hào)表的組織符號(hào)表的管理 第八章 運(yùn)行時(shí)存儲(chǔ)空間組織教學(xué)目的及要求:本章介紹目標(biāo)程序運(yùn)行時(shí)的存儲(chǔ)組織方式,包括靜態(tài)存儲(chǔ)分配和動(dòng)態(tài)存儲(chǔ)分配。教學(xué)難點(diǎn):嵌套過(guò)程語(yǔ)言棧式分配,活動(dòng)記錄、運(yùn)行時(shí)棧的組織。教學(xué)重點(diǎn):局部?jī)?yōu)化;DAG的構(gòu)造與應(yīng)用。教學(xué)內(nèi)容:目標(biāo)機(jī)器模型,一個(gè)簡(jiǎn)單代碼生成器,寄存器分配,DAG目標(biāo)代碼,窺孔優(yōu)化。章節(jié)內(nèi)容代碼生成概述一個(gè)計(jì)算機(jī)模型一個(gè)簡(jiǎn)單的代碼生成器代碼生成研究現(xiàn)狀注:使用教材-編譯原理(第二版).張素琴,呂映芝,蔣維杜,戴桂蘭編著,清華大學(xué)出版社。二、實(shí)驗(yàn)內(nèi)容1)仔細(xì)閱讀PL/0編譯程序文本(編譯原理(第二版)張素琴 呂映芝 蔣維杜 戴桂蘭 主編清華大學(xué)出版社),并上機(jī)調(diào)試通過(guò)。}UNTIL 可根據(jù)自己具體情況從中選擇2個(gè)以上題目進(jìn)行擴(kuò)充。其編譯過(guò)程采用一趟掃描方式,以語(yǔ)法分析程序?yàn)楹诵?,詞法分析和代碼生成程序都作為一個(gè)獨(dú)立的過(guò)程,當(dāng)語(yǔ)法分析需要讀單詞時(shí)就調(diào)用詞法分析程序,而當(dāng)語(yǔ)法分析正確需要生成相應(yīng)的目標(biāo)代碼時(shí),則調(diào)用代碼生成程序。詞法分析和代碼生成作為獨(dú)立的子程序供語(yǔ)法分析程序調(diào)用。Getch過(guò)程通過(guò)反復(fù)調(diào)用Getch子過(guò)程從源程序過(guò)獲取字符,并把它們拼成單詞。查保留字表時(shí)使用了二分法查找以提高效率。語(yǔ)法分析子程序分析:語(yǔ)法分析子程序采用了自頂向下的遞歸子程序法,語(yǔ)法分析同時(shí)也根據(jù)程序的語(yǔ)義生成相應(yīng)三元代碼,并提供了出錯(cuò)處理的機(jī)制。由PL/0的語(yǔ)法圖可知:一個(gè)完整的PL/0程序是由分程序和句號(hào)構(gòu)成的。接下去記錄下代碼段分配位置(即下面生成的jpc指令的位置),然后生成 條件轉(zhuǎn)移jpc指令(遇0或遇假轉(zhuǎn)移),轉(zhuǎn)移地址未知暫時(shí)填0。Repeat語(yǔ)句的處理:首先用CX1變量記下當(dāng)前代碼段分配位置,作為循環(huán)的開(kāi)始位置。const int norw = 16。// digits in numbers 數(shù)字的最大長(zhǎng)度 const int amax = 2047。// 行緩沖區(qū)長(zhǎng)度typedef enum {NUL,IDENT,NUMBER,PLUS,MINUS,TIMES,SLASH,ODDSYM,EQL,NEQ,LSS,LEQ,GTR,GEQ,LPAREN,RPAREN,COMMA,SEMICOLON,PERIOD,BECOMES,BEGINSYM,ENDSYM,IFSYM,THENSYM,WHILESYM,WRITESYM,READSYM,DOSYM,CALLSYM,CONSTSYM,VARSYM,PROCSYM,ELSESYM,REPEATSYM,UNTILSYM} symbol。// functions typedef set symset。t big than levmaxint a。obj0 kind。}other。// last character read symbol sym。// character count int ll。// code line string errStr[]。// 詞法分析器中用于臨時(shí)存放正在分析的詞instruction code[cxmax+1]。// 一些符號(hào)對(duì)應(yīng)的symbol類型表合 char mnemonic[8][6]。public:PL0(char* source,char*destination)。個(gè)單詞void getch()。void enter(obj0 k,int amp。的位置void constdeclaration(intamp。tx,intamp。void expression(symset fsys,int tx,int lev)。void arraydeclaration(intamp。執(zhí)行程序int base(int l,int b,int s[])?!? ”error 0006: 過(guò)程說(shuō)明后的符號(hào)不正確(應(yīng)是語(yǔ)句開(kāi)始符或過(guò)程開(kāi)始符)“, ”error 0007: 應(yīng)是語(yǔ)句開(kāi)始符“, ”error 0008: 過(guò)程體內(nèi)語(yǔ)句部分的后跟符不正確“, ”error 0009: 程序皆為丟了句號(hào)‘.’“, ”error 0010: 語(yǔ)句之間漏了‘。strcpy(word[1],”begin“)。strcpy(word[5],”else“)。strcpy(word[9],”procedure“)。strcpy(word[13],”until“)。wsym[1]= BEGINSYM。wsym[5]= ELSESYM。wsym[9]= PROCSYM。wsym[13]= UNTILSYM。memset(code,0,sizeof(code))。ssym[39。39。]= TIMES。ssym[39。)39。]= EQL。ssym[39。39。]= GTR。strcpy(mnemonic[LIT],” lit “)。strcpy(mnemonic[CAL],” cal “)。(CONSTSYM),(VARSYM),(PROCSYM)。cc= 0。 39。fout=fopen(destination,”w“)。err= err+1。 39。// 檢測(cè)一個(gè)單詞長(zhǎng)度 do{ if(k al){a[k]= ch。}while(isalpha(ch)||isdigit(ch))。kk= kk1。j= norw。}while(i j)sym= wsym[k]。sym= NUMBER。getch()。:39。){sym= BECOMES。// extra stuff added to support 39。){sym= GEQ。// 其它符號(hào)的賦值getch()。}cc= 0。if(line[ll1]==10)ll。}code[cx].f= x。}//gen end// 測(cè)試當(dāng)前單詞符號(hào)是否合法void PL0::test(symset s1,symset s2,int n){ if(sourceEnd)return。it!=()。int dx。// 變量的。// initial table index int cx0。//s1=s1+s2while((sym)==())getsym()。symset::iterator it。code[cx].a= z。cc= cc+1。codeNo++。sourceEnd=true。} elsesym= GTR。if(ch == 39。} elsesym= NUL。if(ch == 39。if(k nmax)error(30)。039。} else if(isdigit(ch))// number { k= 0。if(strcmp(id, word[k])j= k1。} strcpy(id,a)。else { do{a[kk]= 39。} getch()。// cls space and tab if(isalpha(ch))// id or reserved word {k=0。int i,j,k。sprintf(s,”第 %d 行:“,codeNo)。// 引入此變量是出于程序性能考慮 codeNo=0。// 代碼分配指針,代碼生成模塊總在cx所指位置生成新的代碼ll= 0。// (IDENT),(NUMBER),(LPAREN)。strcpy(mnemonic[JMP],” jmp “)。strcpy(mnemonic[LOD],” lod “)。39。ssym[39。]= PERIOD。,39。ssym[39。]= LPAREN。/39。ssym[39。]= PLUS。memset(table,0,sizeof(table))。wsym[15]= WHILESYM。wsym[11]= REPEATSYM。wsym[7]= IFSYM。留字對(duì)應(yīng)的symbol類型wsym[3]= CONSTSYM。strcpy(word[15],”while“)。strcpy(word[11],”repeat“)。strcpy(word[7],”if“)。strcpy(word[3],”const“)。“, ”error 0018: while型循環(huán)語(yǔ)句中丟了do“, ”error 0019: 語(yǔ)句后的標(biāo)識(shí)符不正確“, ”error 0020: 應(yīng)為關(guān)系運(yùn)算符“, ”error 0021: 表達(dá)式內(nèi)標(biāo)識(shí)符屬性不能是過(guò)程“, ”error 0022: 表達(dá)式中漏掉了右括號(hào)‘)’“, ”error 0023: 因子后的非法符號(hào)“, ”error 0024: 表達(dá)式開(kāi)始符不能是此符號(hào)“, ”error 0025: 文件在不該結(jié)束的地方結(jié)束了“, ”error 0026: 結(jié)束符出現(xiàn)在不該結(jié)束的地方“, ”error 0027: “,”error 0028: “,”error 0029: “,”error 0030: “, ”error 0031: 數(shù)越界“, ”error 0032: read語(yǔ)句括號(hào)中標(biāo)識(shí)符不是變量“, ”error 0033: else附近錯(cuò)誤“ , ”error 0034: repeat附近錯(cuò)誤“}。// 構(gòu)造函數(shù)// 析構(gòu)函數(shù)// 出錯(cuò)處理,打印出錯(cuò)// 詞法分析,讀取一// 漏掉空格,讀取一// 生成目標(biāo)代碼,并送入目標(biāo)// 測(cè)試當(dāng)前單詞符號(hào)是否// 分程序分析處理過(guò)程// 登入名字表// 查找標(biāo)示符在名字表中// 常量定義處理// 變量說(shuō)明處理// 列出目標(biāo)代碼清單// 語(yǔ)句部分處理// 表達(dá)式處理// 項(xiàng)處理// 因子處理// 條件處理// 數(shù)組說(shuō)明處理// 對(duì)目標(biāo)代碼的解釋// 通過(guò)靜態(tài)鏈求出數(shù)據(jù)區(qū)的 // 保存代碼}。 dx,int lev)。void factor(symset fsys,int tx,int lev)。void listcode(int cx0)。dx,int lev)。dx,int lev)。程序區(qū)void test(symset s1,symset s2,int n)。}void error(int n)。// 聲明開(kāi)始、表達(dá)式開(kāi)始和項(xiàng)開(kāi)始符號(hào)集 Table table[txmax+1]。// 保留字表symbol wsym[norw+1]。// code line vector errorString。int cx。// last identifier read int num。class PL0 {protected:bool listswitch,sourceEnd。}inOther。t big than amax }。// function code int l。// alfa類型用于標(biāo)識(shí)符 typedef enum {CONSTANT,VARIABLE,PROCEDURE,ARRAY} obj0。// maximum depth of block nesting 最大允許的塊嵌套層數(shù) con
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1