• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      楊 平 胡建陶 蘭美輝

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

      0 引言

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

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

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

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

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

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

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

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

      <運(yùn)算符>→+|-|*|/|=……

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

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

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

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

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

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

      1.3 設(shè)計(jì)各種單詞符號(hào)對(duì)應(yīng)的種別碼

      表1 單詞符號(hào)對(duì)應(yīng)的種別碼

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

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

      2.2 詞法分析過程中的關(guān)鍵算法實(shí)現(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)鍵字、標(biāo)識(shí)符的判定算法

      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++]='

      威信县| 邢台县| 陕西省| 河北省| 南部县| 翼城县| 汨罗市| 万载县| 涿州市| 华安县| 屏山县| 芒康县| 独山县| 德阳市| 上思县| 离岛区| 信丰县| 新田县| 兴城市| 东海县| 木兰县| 巩留县| 丰都县| 哈尔滨市| 张家口市| 山阳县| 视频| 治多县| 固始县| 子洲县| 临汾市| 临沭县| 宽甸| 定边县| 仙游县| 衡山县| 普兰店市| 始兴县| 理塘县| 吉安市| 北安市|