正则表达式与自动机c语言,自动机中正则表达式与语法的区别

正则表达式,正则语法和有限自动机只是同一事物的三种不同形式主义。有算法可以将它们中的任何一种转换为其他任何一种。

我们拥有这三个的基本原因是它们是独立创建的,并且具有由Kleene证明的第一对等价集(也存在其他几种形式主义)(此结果或其一部分称为Kleene定理)。

因此,在这种情况下,取决于您要运行模型的方式,它们都可以识别或生成常规语言的字符串,从数学上讲,就没有什么区别了。

当然,由于形式主义的细节,有时一个模型比另一个模型更容易用于特定任务。此外,它们在人脑中的工作方式通常有些不同,有限的自动机“感觉”(如计算机),正则表达式“感觉”(如您要从较小的子字符串构造字符串)和正则语法“感觉”(如较传统的语法)语言中句子的派生或分类(当您查看历史记录时就不足为奇了)。

因此,为了比较两者,让我们定义它们:

常用表达

因此,正则表达式的递归定义如下:

是一个正则表达式∅∅

是一个正则表达式εε

是每一个正则表达式一个∈Σ一个a一个∈Σa∈Σ

如果和B是正则表达式,则

一个A乙B是正则表达式(concatentation)一个⋅乙A⋅B

是一个正则表达式(替换)一个|乙A∣B

是一个正则表达式(克林星)一个∗A∗

连同一些语义(即,我们如何解释运算符以获取字符串),我们获得了一种从常规语言生成字符串的方法。

普通文法

(N,∑,P,S∈ñ)(N,Σ,P,S∈N)ñNΣΣ小号SPPΣ∗Σ∗PP

右线性文法

乙BCC一个aεε

B→aB→a

B→ACB→aC

B→εB→ε

左线性文法

B→C一个B→Ca

思考的事情

因此,查看这些定义并使用它们,我们可以看到正则表达式看起来像匹配规则,或一次处理字符串的方式。

SS

但是,这些工具确实在做相同的基本事情,如何看待它们的功能隐喻完全取决于您。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值