語言及文法筆記

語言及文法筆記

語言的定義與運算

  • 字符的有限集合稱爲字母表,記爲T
  • 由字母表T中的字符構成的有限序列稱爲字母表T上的字符串
  • ω1\omega_1ω2\omega_2是字母表T上的字符串,ω1=a1a2...am\omega_1=a_1a_2...a_mω2=b1b2...bn\omega_2=b_1b_2...b_nω1ω2=a1a2...amb1b2...bn\omega_1\omega_2=a_1a_2...a_mb_1b_2...b_n
  • TT^*是字母表T上所有字符串和空串的集合,T+T^+是字母表T上的所有字符串構成的集合,並有T+=TϵT^+=T^*-{\epsilon}
  • 字母表T上的語言L是TT^*的子集
  • 兩個語言L1L_1L2L_2的積L1L_1\cdotL2L_2,是由L1L_1L2L_2中字符串的連接所構成的字符串的集合,需要注意L1L_1\cdotL2L_2\neqL2L_2\cdotL1L_1
  • 語言L的冪可歸納定義如下:
    L0=ϵL^0={\epsilon}Ln=LLn1,n1L_n=L\cdot{L^{n-1}},n\ge1
  • 語言L的閉包LL^*定義爲
    L=n0LnL^*=\bigcup_{n\ge0}L^n語言L的正閉包L+L^+定義爲L+=n1LnL^+=\bigcup_{n\ge1}L^n

文法(Chomsky文法體系)

  • 文法G是一個四元組,G=N,T,P,SG={N,T,P,S}其中
    (1)NN 非終結符的有限集合
    (2)TT 終結符的有限集合,且NN\bigcapTT=ϕ\phi
    (3)PP 形式爲α\alpha\rightarrowβ\beta的生成式有限集合,且α(NT)+\alpha\in(N\bigcup{T})^+β(NT)\beta\in(N\bigcup{T})^*α\alpha至少含一個非終結符號
    (4)SS 起始符,且SNS\in{N}
    其中“\rightarrow”含義是可被代替

  • 字符串α\alpha是文法GG的句型,當且僅當SGαS\Longrightarrow_{G}^{*}\alphaα(NT)\alpha\in(N\bigcup{T})^*ω\omegaGG的句子,當且僅當SGωS\Longrightarrow_{G}^{*}\omegaωT\omega\in{T^*}

文法的分類

0型文法

由定義1定義的不加任何限制的文法
由0型文法產生的語言稱爲無限制性語言

1型文法(上下文有關文法)

生成式的形式爲α\alpha\rightarrowβ\beta,其中α|\alpha|\leqβ|\beta|,且α\alpha,β\beta\in(NT)+(N\bigcup{T})^+,且α\alpha至少含有一個非終結符號。
P特點:每個生成式左部字符串長度小於等於右部字符串長度
由1型文法產生的語言稱爲上下文有關語言

2型文法(上下文無關文法)

生成式的形式爲AA\rightarrowα\alpha,AA\inNNα\alpha\in(NT)+(N\bigcup{T})^+
P特點:每個生成式的左部是單個非終結符
由2型文法產生的語言稱爲上下文無關語言
其常見表示形式有
(1) 巴科斯範式(BNF, Backus Normal Form)

例:用BNF表示法描述十進制數的文法的生成式
<十進制數>::=<無符號整數>|<十進制小數>|<無符號整數><十進制小數>
<十進制小數>::=.<無符號整數>
<無符號整數>::=<數字>|<數字><無符號整數>
<數字>::=0|1|2|3|4|5|6|7|8|9

(2) 語法圖

  • 每一個語法圖表示一個語法規則
  • 圓邊框或圓形框內書寫的是“終結符號”
  • 矩形框內所寫的則是“非終結符號”
  • 用語法圖定義語法規則的過程類似於“自頂向下,逐步細化”的過程
  • 語法圖與流程圖不同,語法圖只規定了語法的內容和次序,與步驟無關

3型文法(正則文法)

右線性文法:生成式的形式爲AA\rightarrowω\omegaBBAA\rightarrowω\omegaAABB\inNNω\omega\inTT^*
左線性文法:生成式的形式爲AA\rightarrowBBω\omegaAA\rightarrowω\omegaAABB\inNNω\omega\inTT^*
由3型文法產生的語言稱爲正則語言

文法之間的關係(若無AA\rightarrowω\omega,則爲包含關係)

1、2、3型文法都是在0型聞法得前提下所加的限制,所以必然屬於0型文法
1型文法不允許形式爲AA\rightarrowω\omega的生成式存在,所以具有AA\rightarrowω\omega生成式的2型文法或3型文法不屬於1型文法
如果2型文法或3型文法沒有AA\rightarrowω\omega生成式存在,則其屬於1型文法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章