c语言实现编译器编译原理,编译原理课程设计--C语言编译器实现.doc
編譯原理課程設(shè)計--C語言編譯器實現(xiàn)
甘肅政法學(xué)院
編譯原理課程設(shè)計
題 目 C語言編譯器實現(xiàn)
計算機科學(xué)學(xué)院計算機科學(xué)與技術(shù)專業(yè)10 級 計本 班
學(xué) 號: 201081010137
姓 名: 楊青虎
指導(dǎo)教師: 李 霞
完成時間: 2013 年 6 月
目 錄
一、 原理1
1、簡介1
2、單詞符號及種別表示1
3、語法結(jié)構(gòu)定義如下:2
二、運行環(huán)境3
三、 算法設(shè)計思想3
1、詞法分析主要算法3
2、語法分析主要算法3
3、語義分析主要算法4
四、 程序流程圖5
五、運行測試結(jié)果8
六、心得體會9
七、源代碼9
C語言編譯器實現(xiàn)
一、 原理
1、簡介
編譯程序的工作過程一般可以分為五個階段:詞法分析、語法分析、語義分析與中間代碼產(chǎn)生、優(yōu)化、目標(biāo)代碼生成。每一個階段在功能上是相對獨立的,它一方面從上一個階段獲取分析的結(jié)果來進行分析,另一方面由將結(jié)果傳遞給下一個階段。由編譯程序的五個階段就對應(yīng)了編譯系統(tǒng)的結(jié)構(gòu)。
2、單詞符號及種別表示
單詞符號種別編碼main1int 2float3double4char5if 6else 7do8while9l(l|d)*10dd* 20=21+22- 23* 24/ 25(26)27{28}29,30;31>32>=33<34<=35==36!=37‘\0’1000ERROR-1
3、語法結(jié)構(gòu)定義如下:
::= ::= ‘{‘’}’
::={;};
::=||
::=ID=
::=if
::=do while
::=
::= ::= ::=)
::= Windows 系統(tǒng) Visual C++ 6.0
三、 算法設(shè)計思想
1、詞法分析主要算法
這部分對源文件進行分析,允許/* */注釋。從源文件依次讀取字符,對字符進行分析,組成字符串、數(shù)字、關(guān)系符等固定含義的token符,并把它們添加到token鏈中,如果遇到非法字符報錯并退出程序。
2、語法分析主要算法
這部分對Token鏈進行分析,利用自底向上的分析方法,構(gòu)建SLR(1)分析表的過程是手工完成的。語法分析的同時構(gòu)建語法樹,移進時創(chuàng)建葉子,規(guī)約時創(chuàng)建節(jié)點。
3、語義分析主要算法
這部分對語法樹從左到右進行遍歷,節(jié)點記錄了規(guī)約式的編號,遍歷到節(jié)點時就進行相應(yīng)處理。語義分析主要檢查變量、函數(shù)是否被定義或重定義,同時產(chǎn)生四元式。
函數(shù)一覽表
void scanner();
void lrparser();
void staBlock(int *nChain);
void staString(int *nChain);
void sta(int *nChain);
void fuzhi();
void tiaojian(int *nChain);
void xunhuan();
char* E();
char* T();
char* F();
char *newTemp();
void backpatch(int p,int t);
int merge(int p1,int p2);
void emit(char *res,char *num1,char *op,char *num2);
四元組結(jié)構(gòu)體定義:
struct{
char result[10];
char arg1[10];
char opera[10];
char arg2[10];
}fourCom[20];
四、 程序流程圖
圖1 主函數(shù)流程圖
否
是
否
是
否
是
圖2 遞歸下降分析分析程序流程圖
否
是
否
圖3 語句塊分析流程圖
否
是
圖4 語句串分析流程圖
是否
否
是
否
是
圖5 語句分析流程圖
五、運行測試結(jié)果
正確程序結(jié)果
錯誤程序結(jié)果:報錯!(1)
錯誤程序結(jié)果:報錯!(2)
六、心得體會
這次的課程設(shè)計,最大的收獲就是清楚了編譯的整個過程,在學(xué)習(xí)編譯原理這門課程之時,在做設(shè)計的過程中和詞法分析、語法分析、語義分析聯(lián)系起來, 非常清晰的理解了簡單編譯器
總結(jié)
以上是生活随笔為你收集整理的c语言实现编译器编译原理,编译原理课程设计--C语言编译器实现.doc的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 概率论——均匀分布、指数分布
- 下一篇: 基于SSM的供应商管理系统