编译原理期末复习---第二章 符号以及符号串

1、字母表

1、字母表
字母表(Alphabet)是一组符号的有限集合。这些符号可以包括字母、数
字、特殊字符等。

字母表通常用大写字母Σ表示

例如,一个简单的字母表可以是:Σ = {a, b, c},其中包含了三个小写字母。

注意:字母表是形式语言的基础,用于构建单词(Word)和句子(Sentence)。单词由字母表中的符号按照一定规则组成,而句子则由一个或多个单词构成。

2、符号和符号串

1、符号(Symbol):符号是语言中的基本元素,可以是字母、数字、标点符号或其他字符。

2、符号串(String):符号串是由符号组成的有限序列。

例如,一个简单的字母表:Σ = {a, b, c}

符号表示为

a、b、c

符号串可以表示为

a
b
c
aa
ab
ac
ba
bb
bc
ca
cb
cc
aaa
aab
abb
bbb
bcc
ccc

这只是一部分可能的符号串示例,你可以根据需要进行更多组合和排列。

注意:符号串可以包含一个或多个符号,并且可以为空串(不包含任何符号)。

3、符号串的长度:符号串的长度是指其中包含的符号个数
例如:

aa: 长度为1
ab: 长度为2
ac: 长度为2
aaa: 长度为1
aab: 长度为2

4、空符号串:空符号串可以用 ε 表示,其长度表示为0;

3、符号串的运算

1、符号串的头和尾
对于一个非空的符号串,它有一个头部(首字母)和尾部(末尾字母),用来表示符号串的起始和结束。

例如,对于符号串 "abc",其中 "a" 是头部,"c" 是尾部。

如果符号串只包含一个符号,那么它的头部和尾部是相同的。

对于空符号串,由于没有符号,因此没有定义的头部和尾部。

2、符号串的连接
符号串的连接是指将两个或多个符号串按顺序合并在一起形成一个新的符号串的操作。在符号串的连接中,第一个符号串的尾部与第二个符号串的头部相连。

以符号串 "abc" 和 "def" 为例,它们的连接结果是 "abcdef"。
连接三个符号串 "abc"、"def" 和 "ghi",则结果就是 "abcdefghi"。

3、符号串的方幂
在符号串中,如果将一个符号串重复多次并连接起来形成一个新的符号串,那么这个操作称为符号串的方幂。

例如,对于符号串 "abc",它的方幂表示为 "abc^n",其中 n 表示重复的次数。
如果 n = 0,则符号串的方幂结果是空符号串,即 "abc^0" = ""。
如果 n = 1,则符号串的方幂结果仍然是原符号串本身,即 "abc^1" = "abc"。
如果 n > 1,则符号串的方幂结果就是将原符号串重复 n 次并连接起来
即 "abc^3" = "abcabcabc"。

注意,符号串的方幂操作只适用于非负整数次幂

3、符号串的闭包(克林闭包)运算

{a, b} 的闭包运算包括连接幂运算

连接(Concatenation):

“a” 和 “b” 的连接结果是 “ab”。
“ab” 和 “a” 的连接结果是 “aba”。
幂运算(Exponentiation):

“a” 的平方是 “aa”。
“b” 的三次幂是 “bbb”。

克林闭包:用于描述符号串的可能组合。在字母表上进行克林闭包运算时,可以生成包括空串在内的所有可能符号串的集合。

例如,对于字母表 {a, b} 来说,它的克林闭包 Σ* 包括以下符号串:{ε, a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa, bab, bba, bbb, …}。

4、符号串的正闭包运算

正闭包运与克林闭包差不多,只是正闭包不包含空串ε

总结:

闭包包括空串在内,生成所有可能的符号串,允许重复出现。
正闭包排除空串,生成至少由一个元素组成的符号串,允许重复出现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值