Comments
Description
Transcript
言語処理系 (コンパイラ)
概 要 • 言語処理系の概要 • 言語とオートマトン • • • • • • 字句解析 構文解析 意味解析 コード生成 最適化 その他 (続き) 正規(正則)表現 [ 定義 ] ・Σ上の記号列 x, y に対して、x と y をつなぎ合せてできる記号列 xy ⇒ ・Σ上の言語 L1, L2 に対して、L1 と L2 をつなぎ合せてできる L1L2 あるい は L1・L2 ⇒ ・ ある言語 L に対し、言語 L に属する任意個の記号列を任意回数、任意の順 序で並べて得られる記号列のすべての集合を L* ・ ある言語 L に対し、次のような集合 L を [ 定義 ] Σ上の正規(正則)集合 (regular set) を次の 1) から 5) のように 定義する。 1) 2) 3) 4) (ⅰ) R∪S [ (ⅱ) RS [ (ⅲ) R* [ ] ] ] 5) 上記 1) から 3) の正規集合から出発して、4) の演算を有限回 繰り返すことにより得られる集合だけがΣ 上の正規集合である [ 定義 ] Σ上の正規(正則)表現 (regular expression) を次の 1) から 5) のように定義する。 1) 2) 3) 4) R, S を R, S を表す Σ 上の正規表現とするとき、 (ⅰ) (R+S) は、 (ⅱ) (RS) は、 (ⅲ) (R*) は、 5) 上記 1) から 3) の正規表現から出発して、4) の演算を有限回 繰り返すことにより得られる表現だけがΣ 上の正規表現である 注: ・ 正規表現 R で表される言語:正規言語 ・ L(R) = L(S) ⇒ ⇒ (例) { 010, 011 } からなる言語 ⇒ の和集合 と表現 算術のように扱う : ただし、連接の順序は変化させない εL = φL = L+φ= 0* = ε* = φ* = { 1, 10, 100, 1000, … } ⇒ { ε, 0, 1, 00, 01, … } = ⇒ { ε, 00, 11, 0011, 1100, … } ⇒ [定理] (1) 有限オートマトンAによって識別される言語は (2) 与えられた正規集合を識別 (2) の例: A( 01 ) : x を識別する有限オートマトンを A(x) で表す A( 0+1 ) : A( (0+1)* ) : 一般的にすると … A( PQ ) : A( P+Q ) : A( P* ) : A( ε+ 01( 10 + 01 )* ( 11 )* )