<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í)編譯原理Time05 ~ 文法的認(rèn)知

          共 2199字,需瀏覽 5分鐘

           ·

          2021-04-17 23:07

          首先舉個(gè)自然語言的例子,來了解句子的構(gòu)成規(guī)則。

          <句子> → <名詞短語><動(dòng)詞短語>

          <名詞短語>→<形容詞><名詞短語>

          <名詞短語>→<名詞>

          <動(dòng)詞短語>→<動(dòng)詞><名詞短語>

          <形容詞>→big

          <名詞>→boy

          <名詞>→apple

          <動(dòng)詞>→eat

          上面未用尖括號(hào)括起來部分表示語言的基本符號(hào)

          尖括號(hào)括起來部分稱為語法成分



          文法的形式化定義

          G=(VT,VN,P,S)


          VT:終結(jié)符集合

              終結(jié)符(terminal symbol)是文法所定義的語言的基本符號(hào),有時(shí)也稱為token。

          例:VT={apple, boy, eat,big }


          VN:非終結(jié)符集合

              非終結(jié)符集合(nonterminal)是用來表示語法成分的符號(hào),有時(shí)也稱為”語法變量”

          例:VN={<句子>,<名詞短語>,<動(dòng)詞短語>,<名詞>,...}


          在這個(gè)要注意一下,VT和VN這兩個(gè)集合是不相交的。VT和VN并起來統(tǒng)稱文法符號(hào)集


          P:產(chǎn)生試集合

              產(chǎn)生式(production)描述了將終結(jié)符和非終結(jié)符組合成串的方法,一般形式為:α →β,讀作α定義為β。

              α(VT U VN)+, 且α中至少包含VN中的一個(gè)元素:稱為產(chǎn)生式的頭(head)或左部(leftside)

              VT、VN  兩個(gè)字母表并起來也是一個(gè)字母表,上一篇文章也說到,字母表的閉包是是這個(gè)字母表的字符串構(gòu)成的集合,因此α和β為文法符號(hào)串。

              β(VT U VN)*: 稱為產(chǎn)生式的體(body)或右部(right side)

          例:P={<句子> → <名詞短語><動(dòng)詞短語>,

                      <名詞短語>→<形容詞><名詞短語>,

                      ......

                      }


          S:開始符號(hào)

              SVN ,開始符號(hào)(start symbol)表示的是該文法中最大的語法成分。

          例:S=<句子>

              

          下面來看一下文法的例子

          G=({id,+,*,(, ) },{E},P,E)

          P={E→E+E,

                E→E*E,

                E→(E),

                E→id }


          產(chǎn)生式的簡寫

          對一組由相同左部的α產(chǎn)生式

             α →β1,α β2,...,α βn

          可以簡記為:α β1β2 |...| βn

          讀作:α定義為β1,....,或者βn

          β1β2,...,βn稱為α 候選式(Candidate)


          例:

          E→E+E,

          E→E*E,

          E→(E),

          E→id



          E→E+E | E*E(E) | id



          為了說明哪些是終結(jié)符,哪些是非終結(jié)符,這里進(jìn)行符號(hào)約定

          下面符號(hào)是終結(jié)符:

          1. 字母表中排在前面的小寫字母,如a,b,c

          2. 運(yùn)算符,如+、*等

          3. 標(biāo)點(diǎn)符號(hào),如逗號(hào),括號(hào)等

          4. 數(shù)字0,1,2、...、9

          5. 粗體字符串,如id,if等

          下面符號(hào)是非終結(jié)符:

          1. 母表中排在前面的大寫字母,如A,B,C

          2. 字母S。通常表示開始符號(hào)

          3. 小寫、斜體的名字,如expr、stmt等

          4. 代表程序構(gòu)造的大寫字母。如E(表達(dá)式)、T(項(xiàng))和F(因子)

          字母表中排在后面的大寫字母(如X、Y、Z)

          表示文法符號(hào)(即終結(jié)符或非終結(jié)符)


          字母表中排在后面的小寫字母(主要是u、v、...、z)

          表示終結(jié)符號(hào)串(包括空串)


          小寫希臘字母,如α 、β、γ,表示文法符號(hào)串(包括空串)


          除非特別說明,第一個(gè)產(chǎn)生式的左部就是開始符號(hào)





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


          小浩筆記

          瀏覽 62
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  国产精品久久久久久精 | 夜夜精品一区二区无码 | 无码专区一区二区三区 | 国产久久黄色视屏 | 思思热这里在线 |