プログラム言語の記述

構文(syntax)、意味(semantics)
  1. 構文記述法
  2. 文脈自由文法 CFG
    CFG 実際のプログラム言語では Context-free では ないが、文法規定の中核として重要。
    慣用的な数式の構成がCFGに適合する。
    構文単位の構成の際に内部構造が外部構造と無関係。
    CFG についての処理系による認識など理論・技法が得られている。
    CFGとは、次の4つ組
    G = < V, Σ, P, S >
    である。ここで
    1. VG語彙(vocabulary)と呼ぶ有限集合。
      その要素はG記号(symbol)。
    2. ΣV の部分集合で、G文字集(alphabet)。
      Σの要素
      G文字 終端記号(terminal symbol)
      V - Σの要素
      構文単位(syntactic unit) 構文変数(syntactic variable) 非終端記号(nonterminal symbol)という。
    3. PG生成規則集(set of poduction rules)
      Gの構文単位AV 上の記号列α を 対応させる順序対 <A,α>を
      A → α
      の形に書いたもの。
    4. S は構文単位の一つで、G開始記号(start symbol)

    連接
    αβαβ連接
    導出
    σσ′ A の出現に着目し、 αで置き換える操作
    生成
    σ0 = S からの導出で得られるものの全体 L(G)
    文法G生成された言語

    2進数字`0'と`1'を並べた2進数で、3の倍数になるものを生成するCFG

    Σ = {0,1};
    VN = V - Σ
    = {M, M0, M1, M2 };
    P = {M → 0,
    M → M0, M1 → 1,
    M0 → M11, M0 → M00,
    M1 → M01, M1 → M20,
    M2 → M10, M2 → M21 };
    S = M
  3. BNF
    1. 非終端記号は < > で囲んで表す。
    2. 終端記号はプログラムに使われる文字を書く。
    3. 生成規則は `::=' を使って書く。同じ左辺の構文単位に生成規則が 2つ以上ある場合は `|' (たてぼう) で区切って並べる。
    3の倍数である2進数を生成する BNF
    <3の倍数> ::= 0 | <正の3の倍数>
    <正の3の倍数> ::= <正の3の倍数>0 |
    <3の倍数たす1>1
    <3の倍数たす1> ::= <正の3の倍数>1|
    <3の倍数たす2>0
    <3の倍数たす2> ::= <3の倍数たす1>0 |
    <3の倍数たす2>1
  4. 構文図 構文を流れ図風に描いたもの。

    例:3の倍数である2進数の構文図


実際の構文記述の例:


シラバスへ戻る