1. 程式人生 > >詞法分析——正則表示式(RE)

詞法分析——正則表示式(RE)

正則表示式

  • 對給定的字符集Σ=C1,C2,...,Cn\Sigma = C_1,C_2,...,C_n
  • 空串ϵ\epsilon是正則表示式
  • 對於任意cΣc\in\Sigmacc是正則表示式
  • 如果M和N是正則表示式,則以下也是正則表示式:
    • 選擇: M | N = {M, N}
    • 連線: MN = {mn | m ∈ M, n ∈ N}
    • 閉包: M* = {ε, M, MM, MMM, …} (Kleene 閉包)

C語言中有很多關鍵字,例如 if, while 等: 對於if,iΣi\in\SigmafΣf\in\Sigma

Σ,所以if屬於正則表示式。其他同理。

C語言中的識別符號,是以字母和下劃線開頭,後跟零個或者多個字母、數字或下劃線。其用正則表示式表達的方式如下:(a|b|…|z|A|B|…|Z|_)(a|b|…|z|A|B|…|Z|_|0|1|…|9)*。因為這裡的後面部分是可以為零的,也就是任意個,所以直接使用閉包即可。