正規文法(せいきぶんぽう、英: regular grammar)は、形式文法における右正規文法(みぎせいきぶんぽう、英: right-regular grammar)と左正規文法(ひだりせいきぶんぽう、英: left-regular grammar)の総称。

右正規文法は、形式文法 (N, Σ, P, S) において P に含まれる生成規則が以下のような形式になっているものである。

  1. Aa
  2. AaB
  3. A → ε

ここで、ABSN は非終端記号、a ∈ Σ は終端記号、ε は空文字列、S は開始記号である。

左正規文法は、生成規則が次の形式に従う。

  1. Aa
  2. ABa
  3. A → ε

右正規文法 G の例を示す。G は、N = {S, A}、Σ = {a, b, c} から構成され、P には以下の規則がある。

SaS
SbA
A → ε
AcA

S は開始記号である。この文法を等価な正規表現で表すと a*bc* となる。

概要

正規文法は全ての正規言語を記述することができ、そういう意味では有限オートマトンや正規表現と等価である。さらに言えば、右正規文法も左正規文法も同じ正規言語を定義することができる。

正規文法は全て文脈自由文法に含まれる。

全ての文脈自由文法は、左正規規則と右正規規則の組み合わせに容易に変換可能である。つまり、右正規文法と左正規文法を合成することで全ての文脈自由言語を表現可能である。正規文法は左正規規則か右正規規則を使用するが、同時に両者を使用することはない。そのため、より狭い範囲の言語である正規言語だけを記述できる。

正規文法に空文字列(ε)を許さない場合もある。

関連項目

  • チョムスキー階層

ウェブ制作で良く使う正規表現 えむ家のメモ帳

Cの正規表現とは?概要から使い方までわかりやすく解説 Capa.inc

東京工科大学 コンピュータサイエンス学部 亀田弘之 ppt download

【正規表現】基本正規表現&拡張正規表現~基本的な記述から繰り返しや後方参照まで~│ProCity(プロシティ)

正規文法と定義・具体例・生成規則・例題・有限オートマトンについて マスジョイ