【编译原理】(1)程序语言的语法描述

来源:互联网 发布:学了Java再学什么 编辑:程序博客网 时间:2024/04/28 20:53

1.语言

某一特定字母表上的符号串组成的集合,分为自然语言和形式语言。
程序设计语言是一种符号语言,具有一般形式语言的共同特征。

1.1子母表

字母表是有穷非空的符号集合,用∑表示,字母表上的一个元素成为符号

1.2符号串

字母表∑上的符号串是指由∑上的符号构成的一个有穷序列
(1)不包括任何符号的序列称为空字ε
(2)符号串中的符号是有序的,ab和ba是不同的符号串

2.符号串的运算

2.1连接(积)

设a和b是同一字符表上的两个字符串,把b的各个符号相继写在a符号之后得到的符号串称为a和b的链接记为ab。

2.2方幂(n次连接)

设α是字母表上的一个字符串,把a自身链接n次,即γ=α α α…α(n个α),称为符号α的n次方幂,记为:γ=αn
当n=0时α0

3.符号串集合及运算

若集合U中的所有元素都是某字母表∑上的符号串,则称U为该字母表∑上的符号串集合字母表∑中所有符号串集合用∑*表示。
不含任何元素的空集合{ }用∅表示

∑={a,b}∑*={ε,a,b,aa,ab,ba,bb,...}

3.1符号串集合的连接

定义∑*的子集U和V的连接定义为

UV={αβ|α∈U ^ β∈V}

两个符号串集合U和V的连接UV也是一个集合,其中的符号串满足α∈U并且β∈V的一切符号串αβ所构成的集合。
说明:

对任意符号串α有εα=αε=α{ε}U=U{ε}=UBut:∅A=A∅=∅

3.2符合串集合的方幂

集合V的方幂是集合V的多次自身连接
Vn=VVV…V
字母表∑的方幂为:
0={ε},∑1=∑,∑n=∑∑n-1

3.3符号串集合的闭包和正则闭包

a.规定:V0={ε}
令V=V0∪V1∪V2…则称V是V的闭包
b.如果不允许空符号串,得到的集合为正闭包
V+=V1∪V2

原创粉丝点击