国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

詞法分析程序的設(shè)計與實現(xiàn)研究

2014-04-22 06:31胡建陶蘭美輝
科技視界 2014年24期
關(guān)鍵詞:分析程序詞法編譯器

楊 平 胡建陶 蘭美輝

(曲靖師范學(xué)院計算機科學(xué)與工程學(xué)院,云南 曲靖655011)

0 引言

詞法分析是編譯程序的第一階段的工作,對輸入的源程序進行詞法分析,產(chǎn)生與其等價的屬性自流作為輸出[1-2]。編譯程序在完成詞法分析后,就進入語法分析階段。詞法分析是實現(xiàn)編譯第一個核心階段。本實驗的程序設(shè)計語言用C語言,因為C語言是本科生最熟悉的語言,C語言編譯器一般都是以匯編語言作為目標語言,匯編語言學(xué)生也相對熟悉,用C編程出現(xiàn)的系統(tǒng)報告的出錯信息可作為教學(xué)中的實例,而且通過編寫程序,學(xué)生對C語言的掌握能達到一個新的高度。

1 詞法分析程序的設(shè)計

詞法分析的功能是對輸入的源程序,按照構(gòu)詞規(guī)則分解成一系列單詞符號。單詞是語言中具有獨立意義的最小單位[3-5]。用C語言編寫的源代碼,包括如下單詞:關(guān)鍵字、標識符、常數(shù)、運算符、界限符。程序的輸入為用C編寫的源程序,輸出為屬性字流,為二元組形式(syn,token),syn為單詞種別碼,token為識別出的單詞。

1.1 設(shè)計詞法分析規(guī)則

單詞的構(gòu)詞規(guī)則如下(用擴充的BNF表示)

<關(guān)鍵字>→int/float/if/for……

<標識符>→<字母>|<_>{<字母>|<數(shù)字>|<_>}

<常數(shù)>→<數(shù)字>|<數(shù)字><數(shù)字串>

<運算符>→+|-|*|/|=……

<界限符>→(|)|[|]|{|}|;……

<數(shù)字>→0|1|2|3|4|5|6|7|8|9

<字母>→a|b|……|z|A|B|……|Z

1.2 設(shè)計狀態(tài)轉(zhuǎn)換圖

根據(jù)構(gòu)詞規(guī)則(詞法規(guī)則),設(shè)計的狀態(tài)轉(zhuǎn)換圖如圖1:

圖1 狀態(tài)轉(zhuǎn)換圖

1.3 設(shè)計各種單詞符號對應(yīng)的種別碼

表1 單詞符號對應(yīng)的種別碼

2 詞法分析程序的實現(xiàn)

2.1 詞法分析程序算法流程圖

2.2 詞法分析過程中的關(guān)鍵算法實現(xiàn)

2.2.1 空格處理算法

for(n=0;n<8;n++)token[n]=NULL;

ch=prog[p++];

while(ch=='')

{

ch=prog[p];p++;

}

圖2 詞法分析程序算法流程圖

2.2.2 關(guān)鍵字、標識符的判定算法

if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')||(ch='_')

{

m=0;

while((ch>='0'&&ch<='9')||(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))

{

token[m++]=ch;

ch=prog[p++];

}

token[m++]='