语言及文法笔记

语言及文法笔记

语言的定义与运算

  • 字符的有限集合称为字母表,记为T
  • 由字母表T中的字符构成的有限序列称为字母表T上的字符串
  • ω 1 \omega_1ω1ω 2 \omega_2ω2是字母表T上的字符串,ω 1 = a 1 a 2 . . . a m \omega_1=a_1a_2...a_mω1=a1a2...amω 2 = b 1 b 2 . . . b n \omega_2=b_1b_2...b_nω2=b1b2...bnω 1 ω 2 = a 1 a 2 . . . a m b 1 b 2 . . . b n \omega_1\omega_2=a_1a_2...a_mb_1b_2...b_nω1ω2=a1a2...amb1b2...bn
  • T ∗ T^*T是字母表T上所有字符串和空串的集合,T + T^+T+是字母表T上的所有字符串构成的集合,并有T + = T ∗ − ϵ T^+=T^*-{\epsilon}T+=Tϵ
  • 字母表T上的语言L是T ∗ T^*T的子集
  • 两个语言L 1 L_1L1L 2 L_2L2的积L 1 L_1L1⋅ \cdotL 2 L_2L2,是由L 1 L_1L1L 2 L_2L2中字符串的连接所构成的字符串的集合,需要注意L 1 L_1L1⋅ \cdotL 2 L_2L2≠ \neq=L 2 L_2L2⋅ \cdotL 1 L_1L1
  • 语言L的幂可归纳定义如下:
    L 0 = ϵ L^0={\epsilon}L0=ϵL n = L ⋅ L n − 1 , n ≥ 1 L_n=L\cdot{L^{n-1}},n\ge1Ln=LLn1,n1
  • 语言L的闭包L ∗ L^*L定义为
    L ∗ = ⋃ n ≥ 0 L n L^*=\bigcup_{n\ge0}L^nL=n0Ln语言L的正闭包L + L^+L+定义为L + = ⋃ n ≥ 1 L n L^+=\bigcup_{n\ge1}L^nL+=n1Ln

文法(Chomsky文法体系)

  • 文法G是一个四元组,G = N , T , P , S G={N,T,P,S}G=N,T,P,S其中
    (1)N NN 非终结符的有限集合
    (2)T TT 终结符的有限集合,且N NN⋂ \bigcapT TT=ϕ \phiϕ
    (3)P PP 形式为α \alphaα→ \rightarrowβ \betaβ的生成式有限集合,且α ∈ ( N ⋃ T ) + \alpha\in(N\bigcup{T})^+α(NT)+β ∈ ( N ⋃ T ) ∗ \beta\in(N\bigcup{T})^*β(NT)α \alphaα至少含一个非终结符号
    (4)S SS 起始符,且S ∈ N S\in{N}SN
    其中“→ \rightarrow”含义是可被代替

  • 字符串α \alphaα是文法G GG的句型,当且仅当S ⟹ G ∗ α S\Longrightarrow_{G}^{*}\alphaSGαα ∈ ( N ⋃ T ) ∗ \alpha\in(N\bigcup{T})^*α(NT)ω \omegaωG GG的句子,当且仅当S ⟹ G ∗ ω S\Longrightarrow_{G}^{*}\omegaSGωω ∈ T ∗ \omega\in{T^*}ωT

文法的分类

0型文法

由定义1定义的不加任何限制的文法
由0型文法产生的语言称为无限制性语言

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

生成式的形式为α \alphaα→ \rightarrowβ \betaβ,其中∣ α ∣ |\alpha|α≤ \leq∣ β ∣ |\beta|β,且α \alphaα,β \betaβ∈ \in( N ⋃ T ) + (N\bigcup{T})^+(NT)+,且α \alphaα至少含有一个非终结符号。
P特点:每个生成式左部字符串长度小于等于右部字符串长度
由1型文法产生的语言称为上下文有关语言

2型文法(上下文无关文法)

生成式的形式为A AA→ \rightarrowα \alphaα,A AA∈ \inN NNα \alphaα∈ \in( N ⋃ T ) + (N\bigcup{T})^+(NT)+
P特点:每个生成式的左部是单个非终结符
由2型文法产生的语言称为上下文无关语言
其常见表示形式有
(1) 巴科斯范式(BNF, Backus Normal Form)

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

(2) 语法图

  • 每一个语法图表示一个语法规则
  • 圆边框或圆形框内书写的是“终结符号”
  • 矩形框内所写的则是“非终结符号”
  • 用语法图定义语法规则的过程类似于“自顶向下,逐步细化”的过程
  • 语法图与流程图不同,语法图只规定了语法的内容和次序,与步骤无关

3型文法(正则文法)

右线性文法:生成式的形式为A AA→ \rightarrowω \omegaωB BBA AA→ \rightarrowω \omegaωA AAB BB∈ \inN NNω \omegaω∈ \inT ∗ T^*T
左线性文法:生成式的形式为A AA→ \rightarrowB BBω \omegaωA AA→ \rightarrowω \omegaωA AAB BB∈ \inN NNω \omegaω∈ \inT ∗ T^*T
由3型文法产生的语言称为正则语言

文法之间的关系(若无A AA→ \rightarrowω \omegaω,则为包含关系)

1、2、3型文法都是在0型闻法得前提下所加的限制,所以必然属于0型文法
1型文法不允许形式为A AA→ \rightarrowω \omegaω的生成式存在,所以具有A AA→ \rightarrowω \omegaω生成式的2型文法或3型文法不属于1型文法
如果2型文法或3型文法没有A AA→ \rightarrowω \omegaω生成式存在,则其属于1型文法


版权声明:本文为weixin_43931042原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。