日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

編譯原理課程設計--C語言編譯器實現

甘肅政法學院

編譯原理課程設計

題 目 C語言編譯器實現

計算機科學學院計算機科學與技術專業10 級 計本 班

學 號: 201081010137

姓 名: 楊青虎

指導教師: 李 霞

完成時間: 2013 年 6 月

目 錄

一、 原理1

1、簡介1

2、單詞符號及種別表示1

3、語法結構定義如下:2

二、運行環境3

三、 算法設計思想3

1、詞法分析主要算法3

2、語法分析主要算法3

3、語義分析主要算法4

四、 程序流程圖5

五、運行測試結果8

六、心得體會9

七、源代碼9

C語言編譯器實現

一、 原理

1、簡介

編譯程序的工作過程一般可以分為五個階段:詞法分析、語法分析、語義分析與中間代碼產生、優化、目標代碼生成。每一個階段在功能上是相對獨立的,它一方面從上一個階段獲取分析的結果來進行分析,另一方面由將結果傳遞給下一個階段。由編譯程序的五個階段就對應了編譯系統的結構。

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、語法結構定義如下:

::= ::= ‘{‘’}’

::={;};

::=||

::=ID=

::=if

::=do while

::=

::= ::= ::=)

::= Windows 系統 Visual C++ 6.0

三、 算法設計思想

1、詞法分析主要算法

這部分對源文件進行分析,允許/* */注釋。從源文件依次讀取字符,對字符進行分析,組成字符串、數字、關系符等固定含義的token符,并把它們添加到token鏈中,如果遇到非法字符報錯并退出程序。

2、語法分析主要算法

這部分對Token鏈進行分析,利用自底向上的分析方法,構建SLR(1)分析表的過程是手工完成的。語法分析的同時構建語法樹,移進時創建葉子,規約時創建節點。

3、語義分析主要算法

這部分對語法樹從左到右進行遍歷,節點記錄了規約式的編號,遍歷到節點時就進行相應處理。語義分析主要檢查變量、函數是否被定義或重定義,同時產生四元式。

函數一覽表

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);

四元組結構體定義:

struct{

char result[10];

char arg1[10];

char opera[10];

char arg2[10];

}fourCom[20];

四、 程序流程圖

圖1 主函數流程圖

圖2 遞歸下降分析分析程序流程圖

圖3 語句塊分析流程圖

圖4 語句串分析流程圖

是否

圖5 語句分析流程圖

五、運行測試結果

正確程序結果

錯誤程序結果:報錯!(1)

錯誤程序結果:報錯!(2)

六、心得體會

這次的課程設計,最大的收獲就是清楚了編譯的整個過程,在學習編譯原理這門課程之時,在做設計的過程中和詞法分析、語法分析、語義分析聯系起來, 非常清晰的理解了簡單編譯器

總結

以上是生活随笔為你收集整理的c语言实现编译器编译原理,编译原理课程设计--C语言编译器实现.doc的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。