編譯原理5 詞法分析程式的設計與實現

2022-05-06 08:03:10 字數 1898 閱讀 1478

編譯原理5  詞法分析程式的設計與實現

此程式要逐個檢查運**況,並能當場補全**。

詞法分析程式(lexical

analyzer)要求:

- 從左至右掃瞄構成源程式的字元流

-  識別出有詞法意義的單詞(lexemes)

-  返回單詞記錄(單詞類別,單詞本身)

-  濾掉空格

-  跳過注釋

-  發現詞法錯誤

程式結構:

輸入:字元流(什麼輸入方式,什麼資料結構儲存)

處理:–遍歷(什麼遍歷方式)

–詞法規則

輸出:單詞流(什麼輸出形式)

–二元組

單詞類別:

1.識別符號(10)

2.無符號數(11)

3.保留字(一詞一碼)

4.運算子(一詞一碼)

5.界符(一詞一碼)

單詞符號

種別碼單詞符號

種別碼begin

ifthen

while

doend

l(l|d)*

dd*

源**如下:

#include

#include

#include

char prog[80],token[8];

char ch;

int syn,p,m=0,n,row,sum=0;

char *rwtab[6]=;

void scaner()

if((ch>='a'&&ch<='z')||(ch>='a'&&ch<='z')) //可能是標示符或者變數名

token[m++]='\0';

p--;

syn=10;

for(n=0;n<6;n++) //將識別出來的字元和已定義的標示符作比較,

if(strcmp(token,rwtab[n])==0)

}else if((ch>='0'&&ch<='9')) //數字

}p--;

syn=11;

if(sum>32767)

syn=-1;

}else switch(ch) //其他字元

編譯原理詞法分析小程式的設計

輸入一程式,結束符用 輸出單詞數對 類號,序號 輸出識別符號表,用空格分隔 輸出無符號整數表,用空格分隔 input main output 1,1 3,0 3,1 3,2 1,0 4,0 2,2 5,0 3,4 4,1 2,2 5,1 3,5 1,2 5,0 2,1 4,1 2,0 4,0 3,5...

編譯原理詞法分析程式

include include char prog 80 token 8 char ch int syn,p,m,n,sum char rwtab 6 void scaner token m 0 p 回退乙個字元 syn 10 for n 0 n 6 n if strcmp token,rwtab ...

編譯原理詞法分析程式

include include char scanin 300 scanout 300 extern int testscan char scanin 300 scanout 300 file fin,fout 指向輸入輸出檔案的指標 int main include include include...