正规式(Regular expression)是一种描述正则语言的形式化语言。可用于正则表达式匹配、文本搜索、模式识别等。在许多领域,正规式的运用有着重要的意义。
已知文法,要求求出该文法的正规式。这是一个常见的问题。下面从多个角度进行分析,介绍一下求正规式的基本步骤。
1. 确定文法类型
首先需要确定文法类型,分为正则文法、上下文无关文法、上下文有关文法、无限制文法。 正则文法是最简单的文法,如果待求文法不是正则文法需要通过文法转换将其转成正则文法。
2. 消除文法的左递归
如果文法有左递归,需要对其进行消除。所谓的左递归,是指文法中的某一个非终结符在产生式中一直出现在左边。例如:
A → A α | β
这就是一个左递归的文法,需要进行消除。消除左递归可以用以下公式:
A → β A`
A` → α A` | ε
3. 文法化简
对于一个文法,为了方便运算和求解,需要将其化简。包括去除无用符号、去除无法产生终结符的非终结符等等。
4. 求解正规式
对于正则文法,可直接根据规则求解正规式。对于非正则文法,需要通过文法转换将其转化为正则文法后求解。
- 正则文法的规则
① 空集: ∅
② 空串: ε
③ 终结符: a, b, c, ……
④ 非终结符: A, B, C, ……
⑤ 求和: R = R1 + R2
⑥ 求积: R = R1R2
⑦ 闭包: R = R1*
5. 检验正规式
得到正规式后,需要进行检验。检验的方法包括两种,一种是证明它是正确的,一种是通过程序验证。(例如使用正则表达式引擎)
综上所述,已知文法求正规式,需要确定文法类型,消除文法的左递归,化简文法,然后通过求解正规式的规则求出正规式。最后进行检验。这是一个基本的求解正规式的流程。
扫码领取最新备考资料