第一篇:《編譯原理》課程(詞法分析)實(shí)驗(yàn)報(bào)告
一.實(shí)驗(yàn)序號(hào):《編譯原理》第一次實(shí)驗(yàn)
二.實(shí)驗(yàn)題目:詞法分析
三.實(shí)驗(yàn)日期:2010.10
四.實(shí)驗(yàn)環(huán)境(操作系統(tǒng),開(kāi)發(fā)語(yǔ)言)
操作系統(tǒng):Windows
開(kāi)發(fā)語(yǔ)言:C
五.實(shí)驗(yàn)內(nèi)容(實(shí)驗(yàn)要求)
a)將標(biāo)識(shí)符的詞法改為“以大寫(xiě)字母或小寫(xiě)字母開(kāi)頭,后面可以跟大寫(xiě)字
母或小寫(xiě)字母或數(shù)字或下劃線”。
b)將<條件>中的表示相等關(guān)系的單詞“=”改為“= =”
c)將原來(lái)的無(wú)小數(shù)的數(shù)改為可以有小數(shù)的數(shù)
六.實(shí)驗(yàn)步驟
a)打開(kāi)VC++,找到getsym()項(xiàng)目。
int getsym()
{...}
在getsym()函數(shù)中設(shè)置斷點(diǎn),F(xiàn)10逐過(guò)程調(diào)試
根據(jù)要求a修改為
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')
往后面看,修改while(ch>='a' && ch<='z' || ch>='0' && ch<='9' ||ch>='A' && ch<='Z' || ch=='_');
b)在檢測(cè)賦值符號(hào)的程序段中找到等號(hào) = 的判斷代碼,改變成為 = = 即
可。
c)在獲取整數(shù)數(shù)字的值的程序段后面添加判斷小數(shù)點(diǎn)的代碼。如果是,即
讀取符號(hào)并且按照小數(shù)的要求將其縮小并且累加到總的符號(hào)串中。
七.實(shí)驗(yàn)體會(huì)(包括收獲、心得體會(huì)、存在的問(wèn)題及解決問(wèn)題的方法、建議等)
通過(guò)實(shí)驗(yàn),如果要修改代碼的話,首先應(yīng)該讀懂源碼,在修改之前了解到程序段的功能是什么,然后再在相應(yīng)的行進(jìn)行修改添加,再進(jìn)行合理的調(diào)試。如果問(wèn)題太過(guò)困難可以查詢資料或與同學(xué)進(jìn)行討論
八.實(shí)驗(yàn)結(jié)果(關(guān)鍵源程序)
a)
int getsym()
{
int i,j,k;
while(ch==' '||ch==10||ch==9)/*忽略空格,換行和TAB*/{
getchdo;
}
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')/*名字或保留字以a..zA。Z開(kāi)頭*/{
k=0;
do{
if(k { a[k]=ch; k++; } getchdo; }while(ch>='a' && ch<='z' || ch>='0' && ch<='9' || ch>='A' && ch<='Z' || ch=='_');// if(ch>='0'&&ch<='9')/*檢測(cè)是否為數(shù)字,以0..9開(kāi)頭*/{ k=0; num=0; sym=number; do{ //435 num=10*num+ch-'0'; k++; getchdo; }while(ch>='0' && ch<='9'); if(ch=='.') { k++; sym=period; getchdo; sym=number; int div=10; do{num=num+(ch-'0')/div; k++; getchdo; div=div*10; }while(ch>='0'&&ch<='9'); } b) else { if(ch=='>')//檢測(cè)大于或大于等于符號(hào){ getchdo; if(ch=='=')//add by M { sym=geq;//構(gòu)成>= getchdo; } else { sym=gtr;//否則就是一個(gè)單獨(dú)的>號(hào)} } else { if(ch=='=') { getchdo; if(ch=='=') { sym=deq; getchdo; } else { sym=eql; } } c)else {if(ch == ’.’) {k=10; getchdo; do{num=num+(ch-'0')/k; k=k*10; getchdo; }while(ch>='0'&&ch<='9');} } 編譯原理實(shí)驗(yàn)報(bào)告 報(bào)告完成日期 2018.5.30 一. 組內(nèi)分工與貢獻(xiàn)介紹 二. 系統(tǒng)功能概述; 我們使用了自動(dòng)生成系統(tǒng)來(lái)完成我們的實(shí)驗(yàn)內(nèi)容。我們?cè)O(shè)計(jì)的系統(tǒng)在完成了實(shí)驗(yàn)基本要求的前提下,進(jìn)行了一部分的擴(kuò)展。增加了聲明變量類型、類型賦值判定和聲明的變量被引用時(shí)作用域的判斷。從而使得我們的實(shí)驗(yàn)結(jié)果呈現(xiàn)的更加清晰和易懂。 三. 分系統(tǒng)報(bào)告; 一、詞法分析子系統(tǒng) 詞法的正規(guī)式: 標(biāo)識(shí)符 <字母>(<字母>|<數(shù)字字符>)* 十進(jìn)制整數(shù) 0 |(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)* 八進(jìn)制整數(shù) 0(1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)* 十六進(jìn)制整數(shù) 0x(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)* 運(yùn)算符和分隔符 +| * | / | > | < | = |(|)| <=|>=|==; 對(duì)于標(biāo)識(shí)符和關(guān)鍵字: A5—〉 B5C5 B5—〉a | b |??| y | z C5—〉(a | b |??| y | z |0|1|2|3|4|5|6|7|8|9)C5|ε 綜上正規(guī)文法為: S—〉I1|I2|I3|A4|A5 I1—〉0|A1 A1—〉B1C1|ε C1—〉E1D1|ε D1—〉E1C1|ε E1—〉0|1|2|3|4|5|6|7|8|9 B1—〉1|2|3|4|5|6|7|8|9 I2—〉0A2 A2—〉0|B2 B2—〉C2D2 D2—〉F2E2|ε E2—〉F2D2|ε C2—〉1|2|3|4|5|6|7 F2—〉0|1|2|3|4|5|6|7 I3—〉0xA3 A3—〉B3C3 B3—〉0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f C3—〉(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)|C3|ε A4—〉+ |-| * | / | > | < | = |(|)| <=|>=|==; A5—〉 B5C5 B5—〉a | b |??| y | z C5—〉(a | b |??| y | z |0|1|2|3|4|5|6|7|8|9)C5|ε 狀態(tài)圖 流程圖: 詞法分析程序的主要數(shù)據(jù)結(jié)構(gòu)與算法 考慮到報(bào)告的整潔性和整體觀感,此處我們僅展示主要的程序代碼和算法,具體的全部代碼將在整體的壓縮包中一并呈現(xiàn) 另外我們考慮到后續(xù)實(shí)驗(yàn)中,如果在bison語(yǔ)法樹(shù)生成的時(shí)候推不出目標(biāo)的產(chǎn)生式時(shí),我們?cè)O(shè)計(jì)了報(bào)錯(cuò)提示,在這個(gè)詞的位置出現(xiàn)錯(cuò)誤提示,將記錄切割出來(lái)的詞在code.txt中保存,并記錄他們的位置。 以下是我們的主要代碼: 進(jìn)制的識(shí)別: 結(jié)果展示: 二、語(yǔ)法分析子系統(tǒng) 根據(jù)選擇的語(yǔ)法分析方法進(jìn)行描述 我們使用了遞歸子程序發(fā),并且對(duì)原有的產(chǎn)生式進(jìn)行了改寫(xiě),改寫(xiě)后的結(jié)果如下: P→LP1|L L→S S→id=E|{P}|if C then S | if C then S 1else S2 | while C do S1 C→E1C’ C’→>E2| E→int8E’| int10E’| int16E’| idE’|T E’→+T|-T||+TE’|-TE’ T→int8T’| int10T’| int16T’| idT’|F T’→*F|/F|*FT’|/FT’ F→(E)|int8|int10|int16|id 簡(jiǎn)化的語(yǔ)法圖: S的語(yǔ)法圖: C的語(yǔ)法圖: E的語(yǔ)法圖: T的語(yǔ)法圖: F的語(yǔ)法圖: 流程圖: 語(yǔ)法分析子系統(tǒng)的主要數(shù)據(jù)結(jié)構(gòu)與算法 我們采用了自動(dòng)生成技術(shù),同樣在這里也是展示主要的核心功能代碼,全部的代碼展示在壓縮包中: 我們?cè)谠O(shè)計(jì)時(shí),實(shí)現(xiàn)了產(chǎn)生式對(duì)應(yīng)的字符串同時(shí)標(biāo)識(shí)產(chǎn)生式定義的int值 輔助程序: 生成語(yǔ)法樹(shù)的程序: 1.樹(shù)節(jié)點(diǎn): 2.創(chuàng)建新節(jié)點(diǎn) 3.創(chuàng)建實(shí)數(shù)類型新節(jié)點(diǎn) 4.創(chuàng)建標(biāo)識(shí)符類型新節(jié)點(diǎn) 5.輸出語(yǔ)法樹(shù) 三、三地址碼生成器 算法的基本思想: 我們?cè)黾恿寺暶髯兞款愋汀㈩愋唾x值判定和聲明的變量被引用時(shí)作用域的判斷。從而使得我們的實(shí)驗(yàn)結(jié)果呈現(xiàn)的更加清晰和易懂。 在報(bào)錯(cuò)的時(shí)候,我們會(huì)呈現(xiàn)類型、作用域和賦值三種的問(wèn)題的報(bào)錯(cuò)信息。 流程圖: 算法展示: 四、實(shí)驗(yàn)體會(huì) 這次實(shí)驗(yàn)其實(shí)總的來(lái)說(shuō)是讓我們更加清晰的理解到了我們所學(xué)的內(nèi)容。有時(shí)候我們上課聽(tīng)講,課下復(fù)習(xí)寫(xiě)作業(yè)的時(shí)候,其實(shí)看似掌握了所學(xué)內(nèi)容,但實(shí)際上并沒(méi)有親身體會(huì)的操作很難讓我們深刻的理解其中的相關(guān)意義。通過(guò)這次實(shí)驗(yàn),我們能夠從根源處了解到了我們所學(xué)的內(nèi)容,并且基于我們理解之后的輸出。比如詞法分析不能采用空格來(lái)區(qū)分單詞,因?yàn)榇嬖诩訙p乘除等運(yùn)算符和分隔符,使用空格來(lái)區(qū)分可能會(huì)造成錯(cuò)誤的分解。又比如我們?cè)僭诔绦蛟O(shè)計(jì)中,常常體會(huì)到效率的重要性。影響詞法分析的效率的主要因素是各個(gè)狀態(tài)的分支如何規(guī)劃。如果每個(gè)進(jìn)來(lái)的單詞都能在最短的時(shí)間和最少的匹配次數(shù)內(nèi)找到其入口,則效率將得到很大程度上的提高。所以由此我們產(chǎn)生了聲明變量類型、賦值和作用域的想法,將其放在最后來(lái)進(jìn)行判斷,這樣可以提高整體的執(zhí)行效率。 另外,這次小組成員彼此不在一個(gè)班級(jí),這樣從某一方面來(lái)說(shuō),也加強(qiáng)了我們互相快速熟識(shí)并團(tuán)結(jié)協(xié)作的能力,有了這種體驗(yàn),我想我們?cè)诮窈蟮纳钪校鎸?duì)這種情況的時(shí)候,將會(huì)變得更加有經(jīng)驗(yàn)。 五、源程序 詞法分析器: 輸入結(jié)果: 輸出結(jié)果: 語(yǔ)義分析結(jié)果: 輸入: 第二組數(shù)據(jù)的輸入: 輸出: 三地址碼的輸入: 第二組數(shù)據(jù)的輸入: 輸出: 201X-201X學(xué)年第x學(xué)期 《編譯原理》課程設(shè)計(jì)報(bào)告 院 系: 計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí): XX級(jí)XX 班 學(xué)生姓名: XXXXXX 學(xué) 號(hào): XXXXXXXX 指導(dǎo)老師: XXXXXX 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院監(jiān)制 20XX年X月 目錄 1.課程設(shè)計(jì)的目的 2.課程設(shè)計(jì)的內(nèi)容和要求 3.問(wèn)題分析和相關(guān)知識(shí)介紹 4.設(shè)計(jì)思路和關(guān)鍵問(wèn)題及其解決方案 5.測(cè)試和結(jié)果分析 6.總結(jié)和心得體會(huì) 附件1:參考文獻(xiàn) 附件2:核心源代碼 1.課程設(shè)計(jì)的目的(1)編寫(xiě)詞法分析器 (2)加深對(duì)詞法分析器工作原理的了解和認(rèn)識(shí) 2.課程設(shè)計(jì)的內(nèi)容和要求 編寫(xiě)詞法分析器,詞法分析器能夠識(shí)別關(guān)系算符,詞法分析器能夠識(shí)別標(biāo)識(shí)符和關(guān)鍵字,詞法分析器能夠識(shí)別無(wú)符號(hào)數(shù)。 3.問(wèn)題分析和相關(guān)知識(shí)介紹 構(gòu)成詞法分析器的一種簡(jiǎn)單方法是用狀態(tài)轉(zhuǎn)換圖來(lái)描述源語(yǔ)言詞法記號(hào)的結(jié)構(gòu),然后手工把這種狀態(tài)轉(zhuǎn)換圖翻譯成為識(shí)別詞法記號(hào)的程序。詞法分析器的任務(wù)是把構(gòu)成源程序的字符流翻譯成詞法記號(hào)流。 4.設(shè)計(jì)思路和關(guān)鍵問(wèn)題及其解決方案 把自然語(yǔ)言構(gòu)造成正規(guī)式,把正規(guī)式構(gòu)造成有限自動(dòng)機(jī)NFA,然后根據(jù)子集構(gòu)造法把有限自動(dòng)機(jī)構(gòu)造成無(wú)限自動(dòng)機(jī)DFA,根據(jù)極小化DFA狀態(tài)數(shù)算法把DFA構(gòu)造成最簡(jiǎn)DFA,其次根據(jù)最簡(jiǎn)DFA畫(huà)出轉(zhuǎn)換表,根據(jù)轉(zhuǎn)換表畫(huà)出裝換圖,最后根據(jù)裝換圖就可以編寫(xiě)詞法分析器。 5.測(cè)試和結(jié)果分析 6.總結(jié)和心得體會(huì) 通過(guò)本次試驗(yàn),不僅僅是我學(xué)會(huì)了C#基礎(chǔ)知識(shí),而且還是我對(duì)詞法分析器有了更深入的認(rèn)識(shí),雖然在編寫(xiě)詞法分析器過(guò)程中遇到了很多困難,例如:C#語(yǔ)言不熟悉,對(duì)此法分析器的工作原理分析的不透徹,但在老師和同學(xué)的幫助下,我有了很大的提高,通過(guò)不斷的努力最終順利的完成了課程設(shè)計(jì),很感謝幫助我的XX同學(xué)和XX老師。附件1:參考文獻(xiàn) 《編譯原理(第2版)》 高等教育出版社; 《C#程序設(shè)計(jì)及應(yīng)用教程(第2版)》 人民教育出版社。附件2: 1.Code文檔截圖 2.程序源代碼 using System;using System.Collections.Generic;using System.Text;using System.IO; namespace LexicalAnalysis { class Program { static string[] keys = { “static”, “true”, “return”, “string”, “Length”, “break”, “Console”, “WriteLine”, “bool”, “false”, “ture”, “void”, “if”, “else”, “while”, “int”, “float”, “for”, “enum”, “default”, “case”, “double”, “do” }; static List static List static List static List static List //數(shù)字,標(biāo)識(shí)符,空白,關(guān)系符,運(yùn)算符 static void Main(string[] args){ string[] date = File.ReadAllLines(@“d:code.txt”);//路徑,并存入data for(int i = 0;i < date.Length;i++){ Console.WriteLine(“第” +(i + 1)+ “行code: ” + date.GetValue(i));analysisByLine(date[i]); } //分別輸出存儲(chǔ)在四個(gè)List中的String Console.WriteLine(“關(guān)鍵字,輸入回車”);//輸出所有的關(guān)鍵字 Console.ReadLine(); foreach(string id in key){ Console.WriteLine(id); } Console.WriteLine(“標(biāo)識(shí)符,輸入回車”);//輸出所有的標(biāo)識(shí)符 Console.ReadLine();foreach(string id in bsf){ Console.WriteLine(id); } Console.WriteLine(“數(shù)字,輸入回車”);Console.ReadLine();foreach(string id in sz){ Console.WriteLine(id); } Console.WriteLine(“關(guān)系運(yùn)算符,輸入回車”);Console.ReadLine();foreach(string id in gx){ Console.WriteLine(id); } Console.WriteLine(“算數(shù)運(yùn)算符,輸入回車”);Console.ReadLine();foreach(string id in ys){ Console.WriteLine(id); } Console.WriteLine(“輸入回車退出”); Console.ReadLine(); } static void analysisByLine(string code) //輸出所有的數(shù)字 //輸出所有的關(guān)系運(yùn)算符//輸出所有的算數(shù)運(yùn)算符 { char a = ' ';string temp = “";int j = 0;while(j < code.Length){ a = code[j];temp = ”“;if(Char.IsLetter(a)|| a == '_')//是否為標(biāo)識(shí)符 { temp = temp + a.ToString();j++;a = code[j];while(Char.IsLetterOrDigit(a)){ temp = temp + a.ToString();j++;a = code[j];} if(isKey(temp)){ //Console.WriteLine(”保留字:“+temp); if(!key.Contains(temp)){ // Console.WriteLine(”添加成功“);key.Add(temp);} } else { //Console.WriteLine(”標(biāo)識(shí)符:“+temp); if(!bsf.Contains(temp)){ //Console.WriteLine(”添加成功標(biāo)識(shí)符==“);bsf.Add(temp);} } } else if(Char.IsDigit(a)){ temp = temp + a.ToString();j++;a = code[j];while(Char.IsDigit(a)){ temp = temp + a.ToString();j++;a = code[j]; } //判斷是否是小數(shù) if(a.Equals('.')){ temp = temp + a.ToString();j++;a = code[j];while(Char.IsDigit(a)){ temp = temp + a.ToString();j++;a = code[j];} //判讀是否是科學(xué)記數(shù)法 if(a.Equals('E')|| a.Equals('e')){ temp = temp + a.ToString();j++;a = code[j];while(Char.IsDigit(a)){ temp = temp + a.ToString();j++;a = code[j];} } } // Console.WriteLine(”數(shù)字:“+temp);if(!sz.Contains(temp)){ //Console.WriteLine(”添加成功標(biāo)識(shí)符==“);sz.Add(temp);} } else if(a == '<'){ temp = temp + a.ToString();j++;a = code[j];if(a == '='){ temp = temp + a.ToString();j++;a = code[j];} else if(a == '>'){ temp = temp + a.ToString();j++;a = code[j];} //Console.WriteLine(”關(guān)系符“+temp);if(!gx.Contains(temp)){ //Console.WriteLine(”添加成功標(biāo)識(shí)符==“);gx.Add(temp);} } else if(a == '='){ temp = temp + a.ToString();j++; a = code[j];// Console.WriteLine(”關(guān)系符“+temp);if(!gx.Contains(temp)){ //Console.WriteLine(”添加成功關(guān)系==“);gx.Add(temp);} } else if(a == '>'){ temp = temp + a.ToString();j++;a = code[j];if(a == '='){ temp = temp + a.ToString();j++;a = code[j];} // Console.WriteLine(”關(guān)系符“+temp);if(!gx.Contains(temp)){ //Console.WriteLine(”添加成功標(biāo)識(shí)符==“);gx.Add(temp);} } else { if(a == '+' || a == '-' || a == '/' || a == '*'){ temp = temp + a.ToString();j++;a = code[j];//Console.WriteLine(”運(yùn)算符“+temp);if(!ys.Contains(temp)){ //Console.WriteLine(”添加成功標(biāo)識(shí)符==“);ys.Add(temp);} } else { j++;} } } } //判斷是不是保留字的IsKey方法 static bool isKey(string key){ bool flag = false;for(int i = 0;i < keys.Length;i++) if(keys[i] == key){ flag = true;//Console.WriteLine(key+”是不是key“+flag);break;} else { flag = false; } //Console.WriteLine(key+”是不是key“);// Console.WriteLine(flag+”是不是key");return flag; } } } 實(shí)驗(yàn)2:語(yǔ)法分析 1.實(shí)驗(yàn)題目和要求 題目:語(yǔ)法分析程序的設(shè)計(jì)與實(shí)現(xiàn)。 實(shí)驗(yàn)內(nèi)容:編寫(xiě)語(yǔ)法分析程序,實(shí)現(xiàn)對(duì)算術(shù)表達(dá)式的語(yǔ)法分析。要求所分析算術(shù)表達(dá)式由如下的文法產(chǎn)生。 E?E?T|E?T|TT?T*F|T/F|F F?id|(E)|num實(shí)驗(yàn)要求:在對(duì)輸入表達(dá)式進(jìn)行分析的過(guò)程中,輸出所采用的產(chǎn)生式。方法1:編寫(xiě)遞歸調(diào)用程序?qū)崿F(xiàn)自頂向下的分析。方法2:編寫(xiě)LL(1)語(yǔ)法分析程序,要求如下。 (1)編程實(shí)現(xiàn)算法4.2,為給定文法自動(dòng)構(gòu)造預(yù)測(cè)分析表。(2)編程實(shí)現(xiàn)算法4.1,構(gòu)造LL(1)預(yù)測(cè)分析程序。 方法3:編寫(xiě)語(yǔ)法分析程序?qū)崿F(xiàn)自底向上的分析,要求如下。(1)構(gòu)造識(shí)別所有活前綴的DFA。(2)構(gòu)造LR分析表。 (3)編程實(shí)現(xiàn)算法4.3,構(gòu)造LR分析程序。 方法4:利用YACC自動(dòng)生成語(yǔ)法分析程序,調(diào)用LEX自動(dòng)生成的詞法分析程序。實(shí)現(xiàn)(采用方法1) 1.1.步驟: 1)對(duì)文法消除左遞歸 E?TE'E'??TE'|?TE'|?T?FT'T'?*FT'|/FT'|?F?id|(E)|num 2)畫(huà)出狀態(tài)轉(zhuǎn)換圖 化簡(jiǎn)得: 3)源程序 在程序中I表示id N表示num 1.2.例子: a)例子1 輸入:I+(N*N)輸出: b)例子2 輸入:I-NN 輸出: 編譯原理教學(xué)大綱2001,9 周次課內(nèi)學(xué)時(shí)課內(nèi)安排(講授內(nèi)容)建議課外安排備注 12編譯原理概述閱讀PL/0程序文本 24介紹PL/0編譯程序閱讀PL/0程序文本 32詞法分析程序自動(dòng)構(gòu)造閱讀PL/0程序文本 (正規(guī)式,有窮自動(dòng)機(jī)) 44(2)詞法分析程序自動(dòng)構(gòu)造練習(xí)題 Lex(Flex)介紹,布置PP1實(shí)踐題一PP1 52文法和語(yǔ)言練習(xí)題 64自頂向下語(yǔ)法分析練習(xí)題提交PP1LL(1)文法 72自底向上語(yǔ)法分析練習(xí)題 LR文法 84LR分析練習(xí)題 期中考試 92Yacc介紹,布置PP2實(shí)踐題一PP2 104習(xí)題課 語(yǔ)法分析方法比較提交PP2 112語(yǔ)法制導(dǎo)翻譯,布置PP3實(shí)踐題一PP3 124語(yǔ)法制導(dǎo)翻譯 運(yùn)行時(shí)存儲(chǔ)組織提交PP3 132運(yùn)行時(shí)存儲(chǔ)組織練習(xí)題144代碼優(yōu)化, 布置PP4實(shí)踐題一PP4 152代碼生成164實(shí)踐題目總結(jié)答辯 習(xí)題課 附1 實(shí)踐題目(從中選一) 實(shí)踐題一 Deacf編譯程序的設(shè)計(jì)和實(shí)現(xiàn).實(shí)踐題二Pl/0編譯程序擴(kuò)充,用Lex和 Yacc實(shí)現(xiàn)一個(gè)小解釋器.實(shí)踐題三 java實(shí)現(xiàn)的Mini-Triangle編譯程序.(限少數(shù)同學(xué)選,在第四周作選題報(bào)告)附2 課程評(píng)分 1課堂小測(cè)驗(yàn),作業(yè)抽查 10%期中考試20% 3實(shí)踐題一 40% 實(shí)踐題二20% 實(shí)踐題三 50% 4期末考試 完成實(shí)踐題一 30% 完成實(shí)踐題二50% 完成實(shí)踐題三 20%第二篇:編譯原理實(shí)驗(yàn)報(bào)告
第三篇:《編譯原理》課程設(shè)計(jì)報(bào)告--詞法分析器
第四篇:編譯原理語(yǔ)法分析實(shí)驗(yàn)報(bào)告
第五篇:編譯原理課程-教學(xué)計(jì)劃