詞法分析程式

2022-06-04 04:30:14 字數 2984 閱讀 2460

詞法分析程式的功能:

輸入:源程式字串。

輸出:二元組(單詞種別碼,單詞符號本身)。

單詞符號對應的種別碼:

單詞符號

種別碼單詞符號

種別碼begin

ifthen

while

doend

letter(letter|digit)

digit   digit

用文法描述詞法規則:

《字母》g[s]:s->sa

a->a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|s|y|z

《數字》 g[s]:s->s

s->0|1|2|3|4|5|6|7|8|9     

s->1|2|3|4|5|6|7|8|9

a->0|1|2|3|4|5|6|7|8|9

d->a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z            n->0|1|2|3|4|5|6|7|8|9

s->const| dim|as|mod|and|or|not|if|else|stop|end|select|case|is|for|to|step|byref|byval|sub|function|exit|do|loop|until|while|wend|let|call|rem|integer|long|single|double|boolean|string|me| private|public

s->+|-|*|/|=|#||>=|:=

s->(|),|;|.

#include#include

#include

char character[80];//

存放所有輸入的字元

char token[8];//

單詞自身字串

char ch;//

單個字元

int sym;//

sym:單詞種別碼

int p,m=0,i,row,sum=0;//

sum:整型常數

char*rwtab[6]=;

void

scanner();

void

main()

while(ch!='

#');//

輸入以#號鍵結束

p=0;do}

while(sym!=0);}

void

scanner()

if((ch>='

a'&&ch<='

z')||(ch>='

a'&&ch<='

z'))//

識別符號或者變數名

token[m++]='\0'

; p--;

sym=10

;

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

將識別出來的字元和已定義的標示符作比較,

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

)

}else

if((ch>='

0'&&ch<='

9'))//

數字 p--;

sym=11

;

if(sum>32767

) sym=-1

; }

else

switch(ch)//

其他字元

詞法分析程式

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