日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

c语言实现编译器编译原理,编译原理课程设计--C语言编译器实现.doc

發(fā)布時間:2024/1/1 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言实现编译器编译原理,编译原理课程设计--C语言编译器实现.doc 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

編譯原理課程設(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。