正规式(Regular Expression),是一种描述字符串规律的形式语言。在编译原理中,正规式广泛应用于词法分析器中的单词识别,是学习编译原理的基础知识之一。
正规式可以被视为一种抽象的语言,本文将从多个角度分析正规式的概念,性质以及与编译器的关系。
一、正规式的概念
正规式是用于描述字符串正则表达式的编程语言。正则表达式是一种字符序列,用于匹配一类特定模式的字符串。正则表达式可被解释为一组规则,这些规则描述了一个值的集合。这个值的集合需要满足某些特定的规则,这些规则可以被模式化为一些字符序列。
正规式通常包括字母(集合)和操作符。这些字母可以被认为是一种特殊的字母表,为表示某些特定的字符集。
操作符包括连接符(·)、或符(|)、闭包符(*)、正则符号(?)等,用于操作字符串中的字符。
二、正规式的性质
正规式的语言是由一些有限的字母表和一些有限的操作符组成的,也就是说正规式所表达的语言是一个正则语言。
正则语言具有以下性质:
1. 封闭性
正规式的语言对于合并、交、补、连接、星等这些操作是封闭的。
2. 等价性
对于任意一个正则表达式,都有一个等价的有状态转移的NFA自动机和一个等价的DFA自动机。
3. 不同效率
用正则表达式描述的语言可以用无限状态的NFA和等价的有限状态的DFA在时间和空间上有指数级的差异。
三、正规式与编译器的关系
正规式是编译器的构建过程中最常用的一种工具。在编译器中,正规式用于匹配源代码中的合法标记并将其作为标准输出。在语法分析之前,编译器必须对源代码进行词法分析,也就是利用正规式对代码进行符号化处理。因此正规式是实现编译器必不可少的一部分。
扫码领取最新备考资料