MENU

Catalog

词法分析——正则表达式(RE)

October 10, 2018 • Read: 2971 • 编译原理阅读设置

正则表达式

  • 对给定的字符集$\Sigma = C_1,C_2,...,C_n$
  • 空串$\epsilon$是正则表达式
  • 对于任意$c\in\Sigma$,$c$是正则表达式
  • 如果M和N是正则表达式,则以下也是正则表达式:

    • 选择: M | N = {M, N}
    • 连接: MN = {mn | m ∈ M, n ∈ N}
    • 闭包: M* = {ε, M, MM, MMM, ...} (Kleene 闭包)

C语言中有很多关键字,例如 if, while 等:
对于if,$i\in\Sigma$,$f\in\Sigma$,所以if属于正则表达式。其他同理。

C语言中的标识符,是以字母和下划线开头,后跟零个或者多个字母、数字或下划线。其用正则表达式表达的方式如下:(a|b|...|z|A|B|...|Z|_)(a|b|...|z|A|B|...|Z|_|0|1|...|9)*。因为这里的后面部分是可以为零的,也就是任意个,所以直接使用闭包即可。

Archives Tip
QR Code for this page
Tipping QR Code