跳转至

正规表达式与有限自动机

![[高级语言及其语法描述#基本概念的介绍]]

正规式与正规集

  • 正规集可以使用正规表达式表示
  • 正规表达式是表示正规集的一种方法
  • 一个字集合是正规集当且仅当它能用正规式表示
  • 正规式与正规集的递归定义:

    • 对于给定的字母表Σ
      • ε都是Σ上的正规式,其表示的正规集为{ε}
      • 对于任何aΣaΣ上的正规式,其表示的正规集为{a}
      • 如果e1e2都是Σ上的正规式,他们所表示的正规集为L(e1)L(e2),则
        • (e1|e2)为正规式,其表示的正规集为L(e1)L(e2)
        • (e1e2)为正规式,其表示的正规集为L(e1)L(e2)
        • (e1)为正规式,其表示的正规集为(L(e1))

          仅由有限次使用上述三步骤而定义的表达式才是Σ上的正规式,仅由这些正规式表示的正规集才是Σ上的正规集

  • 所有词法结构一般都可以使用正规式描述

  • 若两个正规式所表示的正规集相同,则称这两个正规式等价:
    • b(ab)=(ba)bimage.png
    • (ab)=(a|b)
  • 对于正规式,下列等价成立:
    • 交换律:e1|e2=e2|e1
    • 结合律:
      • e1|(e2|e3)=(e1|e2)|e3
      • e1(e2e3)=(e1e2)e3
    • 分配律:
      • e1(e2|e3)=e1e2|e1e3
      • (e2|e3)e1=e2e1|e3e1

确定有限自动机(DFA)

  • 自动机M是一个五元式M=(S,Σ,f,S0,F)
    • 有穷状态集S
    • 输入字母表Σ
    • 状态转换函数f
    • 唯一一个初态S0S
    • 终态集(可空)FSimage.png
  • DFA可以表示为状态转换图
  • 对于Σ中的任何字α,若存在一条从初态到某一终态的道路,且道路上所有弧上的标记符连成的字为α,则α为DFA M所识别
  • DFA M所识别的全体字称为L(M)

    Σ上的字集VΣ是正规集,当且仅当存在Σ上的DFA M,使得V=L(M)

非确定有限自动机(NFA)

  • 与DFA的区别:
    • 弧上的标记可以是Σ的一个字,而不一定是单个字符
    • 同一个字可能出现在同状态射出的多条弧上
  • 编译原理重点 DFA与NFA的描述能力相同:对于每个NFA M存在一个DFA M',使得L(M)=L(M')

    image.png

正规文法与有限自动机的等价性

正规式与有限自动机的等价性

  • 定理:
    • 任何(FA)M,有存在一个正规式r,使L(r)=L(M)
    • 对于任何正规式r,都存在一个FA(M),使L(r)=L(M)