正则表达式:语言表示与编程实践
1. 语言的表示
在日常生活中,英语由一系列单词组成,每个单词是罗马字母表 [a..z] 中字母的并列组合。作为计算机科学学习者,我们还熟悉其他语言,如各种编程语言和二进制语言。二进制语言的单词是二进制数,每个二进制数是二进制字母表 {0 1} 中元素的有限并列。
语言的表示方式有多种选择。例如,在有限状态机(FSM)中,一个单词可以表示为字母表元素的列表。以单词 “cat” 为例,有以下不同表示:
| 表示类型 | 表示形式 |
| ---- | ---- |
| 英语 | “cat” |
| FSM | ‘(c a t) |
| 二进制 | 011000110110000101110100 |
这些不同的表示方式代表了相同的概念,即表示本身不改变其含义。语言可以表示为字符串集合、列表集合或二进制数集合。
语言通常使用有限表示。对于有限语言,可以列出所有单词作为有限表示。但许多有趣的语言是无限的,无法列出所有单词,因此需要有限表示。如果 Σ 是用于编写语言有限表示的字母表,那么所有可能的有限语言表示定义为 Σ* ,这意味着有限语言表示的语言是可数无限的,而 2Σ* 是不可数的。所以,存在可数数量的有限语言表示和不可数数量的语言需要表示,并非每个语言都有有限表示,我们只能为一些有趣的语言开发有限表示。
2. 使用并集和连接定义语言
2.1 构造器
我们考虑由两个语言
超级会员免费看
订阅专栏 解锁全文
15

被折叠的 条评论
为什么被折叠?



