編譯原理上機指導

2021-09-22 22:10:50 字數 2553 閱讀 9525

第一部分詞法分析

實驗一、簡單的掃瞄器設計

一、實驗目的:熟悉並實現乙個簡單的掃瞄器

二、實驗內容:

1. 設計掃瞄器的自動機;

2. 設計翻譯、生成token的演算法;

3. 編寫**並上機除錯執行通過。

·要求:輸入——源程式檔案;

輸出——(1)相應的token序列;

2)關鍵字、界符表,符號表,常數表。

三、掃瞄器設計:

單詞token

1. 自動機:

空l/d關鍵字表和界符表

l1單詞編碼

dprogram 3

d1procedure 4

begin 5

end6

while 7

do89

1011

11213

1415

12. 關鍵字表和界符表:

四、程式實現:

1.資料結構:

char ch當前字元

char strtoken當前單詞

char *keywords=

struct tokentype tokentoken陣列

2.演算法設計:

1. 初始化;

2. 濾除空格,讀取第乙個非空字元到ch;

3. if (ch是乙個字母)

4. 處理關鍵字或識別符號;

5. else if (ch是乙個數字)

6處理常數;

else

7處理界符或錯誤處理;

3.演算法求精:

·step2 :

ch=getchar讀取當前字元到ch

while (ch==』 『)

ch=getchar();

·step3:

int isletter(char ch判斷ch是否為字母

if (ch是a~z或a~z)

return 1;

else

return 0;

}·step4:

4.1 在strtoken中拼成乙個單詞拼關鍵字或識別符號

4.2 code=reserve(strtoken查關鍵字表;

if (!code未查到,是乙個識別符號

else

4.5 生成並輸出乙個關鍵字token;

·step5:

int isdigit(char ch判斷ch是否為數字

if (ch是0~9)

return 1;

else

return 0;

}·step6:

6.1 在strtoken中拼成乙個單詞拼常數

6.2 value=insertconst(strtoken將strtoken中的單詞插入到常數表中

6.3 生成並輸出乙個常數token;

·step7:

7.1 將ch中的字元拼接到strtoken中;

if (ch==』:』)

7.2 處理雙界符「:=」;

7.3 code:=bound(strtoken查界符表

if (!code未查到

procerror錯誤處理

else

7.4 生成並輸出乙個界符token;

·step4.1:

while (isletter(ch)||isdigit(ch))

·step4.2:

int reserve(char *strtoken)

用strtoken中的單詞去查關鍵字表。查到了,則返回該關鍵字的編碼;

//否則,返回0

int i=0;

while (iif (!strcmp(keywords[i], strtoken))

return (i+3);

i++;

return 0;

·step4.3:

int insertid(char *strtoken)

用strtoken中的單詞去查符號表。查到了,則返回該單詞在表中的位置值;

//否則,將strtoken中的單詞插入符號表的尾部,並返回位置值

int i=0;

while (iif (!strcmp(id[i], strtoken))

return i;

i++;

strcpy(id[i],strtoken);

m++;

return i;

·step4.4:

token[i].code=1;

token[i].value=value;

print(token[i輸出token

·step4.5:

token[i].code=code;

token[i].value=-1;

print(token[i輸出token

·step6.2:

int insertconst(char *strtoken)

用strtoken中的單詞去查常數表。查到了,則返回該單詞在表中的位置值;

編譯原理上機實驗報告

編譯技術上機實驗題目 實驗一一 題目 編制c語言子集的詞法分析程式 二 目的 通過設計 編制 除錯乙個具體的詞法分析程式,加深對詞法分析原理的理解,並掌握在對程式語言源程式進行掃瞄過程中將其分解為各類單詞的詞法分析方法。三 要求 1.根據具體情況,由同學們自己選取c語言的乙個適當大小的子集 可取一類...

GIS原理上機指導書

南京工業大學測繪學院 一 實驗目的 熟悉桌面gis軟體arcgis的介面環境,初步掌握arcgis套件中arcmap arccatalog arctoolbox的主要工具 選單命令的使用,並在此基礎上理解gis軟體應具備的基本功能。二 實驗內容 練習使用 getting started with a...

GIS原理上機實習報告

專業班級學號 姓名指導教師 學期南京工業大學測繪學院 一 上機時間 地點 1 共2學時,時間 第 2 周 星期 2 第節課2 機房機號 其他成員 二 實驗總結及上交成果 一 上機時間 地點 1 共4學時,時間 第 4 周 星期 2 4 第 3 6 4 7 節課 2 機房機號 其他成員 二 實驗總結及...