<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          學(xué)習(xí)編譯原理Time01 ~ 詞法分析

          共 2197字,需瀏覽 5分鐘

           ·

          2021-04-12 22:16

              為了將一個程序從一種語言翻譯成另一種語言,編譯器必須首先把程序的各種成分拆開,并搞清其結(jié)構(gòu)和含義,然后再用另一種方式把這些成分組合起來。編譯器的前端執(zhí)行分析,后端進(jìn)行合成。

              分析一般分為以下3種:

          1. 詞法分析:將輸入分解成一個個獨立的詞法符號,即“單詞符號” ( token),簡稱單詞。

          2. 語法分析:分析程序的短語結(jié)構(gòu)。

          3. 語義分析:推算程序的含義。

              

              詞法分析器以字符流作為輸入,生成一系列的名字、關(guān)鍵字和標(biāo)點符號,同時拋棄單詞之間的空白符和注釋。程序中每一點都有可能出現(xiàn)空白符和注釋;如果讓語法分析器來處理它們就會使得語法分析過于復(fù)雜,這便是將詞法分析從語法分析中分離出去的主要原因。

                詞法分析并不很復(fù)雜,但是我們卻使用能力強(qiáng)大的形式化方法和工具來實現(xiàn)它,因為類似的形式化方法對語法分析研究很有幫助,并且類似的工具還可以應(yīng)用于編譯器以外的其他領(lǐng)域。



          詞法分析器是編譯器中與源程序直接接觸的部分,因此詞法分析器可以做諸如
          1). 去掉注釋,自動生成文檔(c語音中的//注釋)
          2). 提供錯誤位置(可以通過記錄行號來提供),當(dāng)字符流變成詞法記號流以后,就沒有了行的概念
          3). 完成預(yù)處理,比如宏定義



          詞法分析的主要任務(wù)

              從左向右逐行掃描源程序的字符,識別出各個單詞,確定單詞的類型。將識別出的單詞轉(zhuǎn)換成統(tǒng)一的機(jī)內(nèi)表示——單詞符號(token)形式:

              token:<種別碼,屬性值>


          單詞類型
          種別種別碼
          1
          關(guān)鍵詞
          if、else、while、...
          一詞一碼
          2
          標(biāo)識符
          變量名、數(shù)組名、函數(shù)名、...
          多次一碼
          3常量
          整型、浮點型、字符型、....
          一型一碼


          4


          運算符

          算術(shù)(+ - / * ++ --)

          關(guān)系(> < == != >= <=)

          邏輯(& | ~)

          一詞一碼

                 或

          一型一碼

          5
          界限符
          ; ( ) = { } ...一詞一碼


          示例:詞法分析后得到的token序列

          輸入:

              while(value != 100){num++;}


          輸出(藍(lán)字部分):

          1. while  <WHILE,    -     >

          2.         <SLP ,    -        > 

          3. value  < IDN ,  value  > 

          4.     !=   < NE ,     -        >

          5.   100   < CONST ,  100>

          6.      )     < SRP ,      -    >

          7.     {      < LP ,        -    >

          8.  num   < IDN,   num  >

          9.    ++    < INC ,     -    >

          10.     ;       < SEMI ,   -    > 

          11.     }       < RP ,       -    >    






          記錄
          點點滴滴的筆記
          歡迎關(guān)注,共同學(xué)習(xí)


          小浩筆記

          瀏覽 34
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  狠狠干视频在线 | 日韩国产av | 波多野结衣做爱 | 天天干 天天添 | 亚洲最新视频在线免费播放不卡网站 |