Java正则判断中文字符串句型_编译原理-程序设计语言及其文法【笔记】

5e2c7c017c75cc7fd40d9288f05ca7db.png

(一) 字母表(Alphabet)

定义:字母表∑是一个有穷符号集合

符号:字 母、数符号:字 母、数、标点符号、 标点符号、 …

说明:为保证排版兼容问题,未使用 MD,HTML 等语法,本文中上标使用 ^ 下标使用 _ 例如:2^3 , X_n

(1) 字母表上的运算

下面的几种运算,可以先看例子,再回过头看上面的定义,就其实很简单了

A:字母表 ∑1 和 ∑2 的乘积 ( product)

∑1∑2={ ab | a∈ ∑1, b∈ ∑2}

例: { 0, 1} {a, b} = {0a, 0b, 1a, 1b}

B:字母表 ∑ 的n次幂 ( power)

∑0 ={ ε }

∑n =∑n-1 ∑ , n ≥ 1

例子:{0,1}^3 = {0,1}{0,1}{0,1} = {000,001,010,011,100,101,110,111}

通过举例看到字母表(数字)的3次方,最后的结果,就是一些长度为3的数字串的集合

结论:字母表的n次幂:长度为n的符号串构成的集合

C:字母表 ∑ 的正闭包(positive closure)

∑+ = ∑ ∪ ∑2 ∪ ∑3 ∪ …

例:{a, b, c, d }+ = {a, b, c, d, aa, ab, ac, ad, ba, bb, bc, bd, …..., aaa, aab, aac, aad, aba, abb, abc, …...}

结论:字母表的正闭包:长度正数的符号串构成的集合

D:字母表 ∑ 的克林闭包(Kleene closure)

∑ = ∑0 ∪ ∑+ = ∑0 ∪ ∑ ∪ ∑2 ∪ ∑3 ∪ …*

例:{a, b, c, d }* = {ε, a, b, c, d, aa, ab, ac, ad, ba, bb, bc, bd, ...…, aaa, aab, aac, aad, aba, abb, abc, …...}

注:∑0 ={ ε }

总结:字母表的克林闭包:任意符号串(长度可以为零)构成的集合

(2) 串

设∑是一个字母表,任意x∈∑*,x称为是 ∑上的一个串

串是字母表中符号的一个有穷序列

串s的长度,通常记作|s|,是指s中符号的个数

例:|aab| = 3

空串是长度为0的串,用 ε (spsilon) 表示

|ε| = 0

A:串上的运算-连接

如果 x 和 y 是串,那么 x 和 y 的连接是把 y 附加到 x 后面形成的串,记作 xy

例: x = dog ,y = house ,xy = doghouse

空串是连接运算的单位元( identity),即,对于任何串 s 都有,εs = sε = s

设x,y,z,是三个字符串,如果x = yz,则称y是x的前缀,z是x的后缀

B:串上的运算-幂

s0= ε

sn = s^(n-1)s, n ≥1

s1 = s0 s = εs = s,s2 = ss,s3 = sss,…

例:如果 s =ba,那么s1= ba,s2=baba, s3=bababa,…

结论:串s的n次幂:将n个s连接起来

(二) 文法

(1) 文法的形式化定义

G = (V_T , V_N , P , S )

A:V_T:终结符集合

终结

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值