詞法分析程式新

2022-06-04 22:15:23 字數 3007 閱讀 6322

詞法分析程式的功能:

提示使用者輸入一段需分析的源程式,然後程式讀入該源程式的字串進行詞法分析,最後輸出詞法分析的結果顯示在螢幕上。

符號與種別碼對照表:

單詞符號 種別碼 單詞符號 種別碼

begin     1        :          17

if           2        :=        18

then      3        <          20

while      4       <=        22

do         5 

end       6         >         23

l(l|d)*   10       >=       24

dd*      11       =         25

+         13         ;        26

-          14        (         27

*          15        )        28

/          16        #         0

《字母》

s->a|b|c||d|.....y|z|

《數字》

d->1|2|3|...|8|9|

s->d|sd|s0|

《識別符號》

a->1|2|3|...|8|9|

b->a|b|c|...|y|z|

s->ab

《關鍵字》

b->a|b|c|...|y|z|

s->b|ab|

《運算子》s

a->+|-|*|/|

《界符》

d->:|;|...|<|=|

s->d|sd|

1 #include2

#define max 100

3char ch,zifu[max],linshi[15];4

int zhongbie,p;/*

zhongbie代表字元種別,p代表陣列zifi的下標位置*/5

void

cwh();

6main()

7while(zhongbie!=-1

);17}18

void

cwh()

19;/*

char*陣列每個元素指向乙個char型的變數,關鍵字陣列記得zhongbie+1

*/22

char shuangfuhao[2]=;/*

字元=1

*/23 zhongbie=-1;24

for(i=0;i<15;i++)

25 /*

定義乙個臨時存放字串的陣列用作比較

*/26

do27

35/*

識別關鍵字或者識別符號

*/36

if((ch>='

a'&&ch<='

z')||(ch>='

a'&&ch<='z'

))37

43 zhongbie=10;/*

p=p+1下次識別就是p+1

*/44

for(i=0;i<6;i++) /*

將識別出來的字元和已定義的關鍵字作比較

*/4551}

52break;53

}54/*識別數字

*/55

else

if((ch>='

0'&&ch<='9'

))56

62 zhongbie=11;63

break;64

}65else

6677

else

78

79break;80

case

'<':

81 linshi[m++]=ch;

82 ch=zifu[p++];

83if(ch=='='

)8488else

if(ch=='

>')

8993

else

94

95break;96

case

'>':

97 linshi[m++]=ch;

98 ch=zifu[p++];

99if(ch=='='

)100

104else

105

106break

;107

case'+

':zhongbie=13;linshi[0]=ch;break

;108

case'-

':zhongbie=14;linshi[0]=ch;break

;109

case'*

':zhongbie=15;linshi[0]=ch;break

;110

case'/

':zhongbie=16;linshi[0]=ch;break

;111

case'=

':zhongbie=25;linshi[0]=ch;break

;112

case';

':zhongbie=26;linshi[0]=ch;break

;113

case'(

':zhongbie=27;linshi[0]=ch;break

;114

case')

':zhongbie=28;linshi[0]=ch;break

;115

case'#

':zhongbie=0;linshi[0]=ch;break

;116

}117

break

;118

}119 }while(zhongbie!=-1

);120 }

詞法分析程式

上課沒聽啥,一邊看書,一邊做的。基本上,老師的要求是實現了,能把乙個句子 也可以是一整個程式,但還不完善,由於時間急,很多情況來不及考慮了 中的單詞項分析出它是保留字,還是識別符號,運算子等等。開始是在控制台下做得,也比較純正 lex.h ifndef lex h define lex h incl...

詞法分析程式

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

詞法分析程式

include include void fenxi char c,char b void word char a void number char a int i 定義全域性變數i int s 1 用來記錄是否存在非法字元 main printf n void number char a 對數字字...