編譯原理(清華大學出版社)-- 文法概念以及符號和符號串


  • 對Pascal程序來說,一個上下文無關文法,可以定義為符號串 A := BC
  • 程序設計語義分為兩類:靜態語義和動態語義

文法的直觀概念

推導或產生句子

例如,我是大學生

<句子> => <主語><謂語>

            => <代詞><謂語>

            =>  我<謂語>

            =>  我<動詞><直接賓語>

            =>  我是<直接賓語>

            =>  我是<名詞>

            =>  我是大學生

  • 符號 => 的含義是,使用一條規則,代替其左端的某個符號,產生其右端的符號串

符號和符號串

字母表

  • 字母表的元素的非空有窮集合,字母表中的元素稱為符號
  • 因此字母表也稱為符號集
  • 不同語言可以有不同的字母表

符號串

  • 由字母表中的符號組成的任何有窮序列稱為符號串
  • 例如,001110 是字母表{0, 1}的符號串;a,b,c,aaca是A={a,b,c}上的符號串
  • 允許空符號串,不包含任何符號的符號串,用ε表示,其長度為0,即|ε|=0

符號串的運算

  • 符號串的頭尾,固有頭和固有尾
  • 如果 z=xy 是一符號串,那么 x 是z的頭,y是z的尾,如果x是非空的,那么y是固有尾;如果y是非空的,那么x是固有頭
  • 設z=abc,那么z的頭是ε,a,ab和abc;除abc外,其他都是固有頭;z的尾是ε,c,bc和abc;z的固有尾是ε,c和bc
  • 省略寫法:z=x...,z=...x...

符號串的連接

  • 設x和y是符號串,它們的連接xy是把y的符號寫在x的符號之后得到的符號串
  • 例如,設x=ST,y=abu,則它們的連接xy=STabu,看出|x|=2,|y|=3,|xy|=5,由於ε的含義,顯然由 εx=xε=x

符號串的方冪

  • 設x是符號串,把x自身連接n次得到符號串z,即z=xx...xx,稱為符號串x的方冪,寫作z=xn,即把符號串x相繼地重復寫n次
  • x0=ε,x1=ε,x2=xx,x3=xxx分別對應於n=0,1,2,3
  • 對於n>0,有xn=xxn-1=xn-1x

符號串集合

  • 若集合A中的一切元素都是某字母表上的符號串,則稱A為該字母表上的符號串集合
  • 兩個符號串集合A和B的乘積定義如下:AB={xy|x∈A且y∈B},即AB是滿足x屬於A,y屬於B的所有符號串xy所組成的集合
  • 例如,若A={a,b},B={c,d},則集合AB={ac, ad, bc, bd},對任意符號串x有εx=xε=x,所以有{ε}A=A{ε}=A
  • 指定字母表∑之后,可以用∑*表示∑上所有有窮長的串的集合,例如∑={0,1},則∑*={ε,0,1,00,01,10,11,000,001,010,...},也可表示為字母表的方冪形式,∑*稱為集合∑的閉包
  • 而∑+=∑1∪∑2...∑n稱為∑的正閉包,顯然有 ∑*=∑0∪∑+,∑+=∑∑*=∑*
  • *具有可數的無窮數量的元素,若x是∑*中的元素,則表示為x∈∑*,否則x不屬於∑*,對於所有的∑,有ε∈∑*

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM