语言及文法笔记

语言及文法笔记

语言的定义与运算

  • 字符的有限集合称为字母表,记为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_1 L1 L 2 L_2 L2的积 L 1 L_1 L1 ⋅ \cdot L 2 L_2 L2,是由 L 1 L_1 L1 L 2 L_2 L2中字符串的连接所构成的字符串的集合,需要注意 L 1 L_1 L1 ⋅ \cdot L 2 L_2 L2 ≠ \neq = L 2 L_2 L2 ⋅ \cdot L 1 L_1 L1
  • 语言L的幂可归纳定义如下:
    L 0 = ϵ L^0={\epsilon} L0=ϵ L n = L ⋅ L n − 1 , n ≥ 1 L_n=L\cdot{L^{n-1}},n\ge1 Ln=LLn1,n1
  • 语言L的闭包 L ∗ L^* L定义为
    L ∗ = ⋃ n ≥ 0 L n L^*=\bigcup_{n\ge0}L^n L=n0Ln语言L的正闭包 L + L^+ L+定义为 L + = ⋃ n ≥ 1 L n L^+=\bigcup_{n\ge1}L^n L+=n1Ln

文法(Chomsky文法体系)

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

  • 字符串 α \alpha α是文法 G G G的句型,当且仅当 S ⟹ G ∗ α S\Longrightarrow_{G}^{*}\alpha SGα α ∈ ( N ⋃ T ) ∗ \alpha\in(N\bigcup{T})^* α(NT) ω \omega ω G G G的句子,当且仅当 S ⟹ G ∗ ω S\Longrightarrow_{G}^{*}\omega SGω ω ∈ 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 A A → \rightarrow α \alpha α, A A A ∈ \in N N N α \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 A A → \rightarrow ω \omega ω B B B A A A → \rightarrow ω \omega ω A A A B B B ∈ \in N N N ω \omega ω ∈ \in T ∗ T^* T
左线性文法:生成式的形式为 A A A → \rightarrow B B B ω \omega ω A A A → \rightarrow ω \omega ω A A A B B B ∈ \in N N N ω \omega ω ∈ \in T ∗ T^* T
由3型文法产生的语言称为正则语言

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值