プログラミング言語

プログラミング言語

テキストが意味を持つまでの3層。字句・構文・意味の分離は形式言語の階層に対応した必然。

執筆済 コンピュータ言語

人間が書いたテキストが、どうやって意味を持つのか。

3 つの層#

問い 担当
字句 どこが単語の切れ目か 字句解析
構文 どういう構造か 構文解析
意味 何を表しているか 意味解析型システム

自然言語の音韻論・統語論・意味論に対応する。

x = 1 + 2 * 3
   ↓ 字句解析
[x] [=] [1] [+] [2] [*] [3]
   ↓ 構文解析
     =
    /    x    +
       /       1   *
         /         2   3
   ↓ 意味解析
型は? 変数 x は宣言されている?

形式言語との対応#

文法 認識する機械 用途
正規文法 有限オートマトン 字句解析
文脈自由文法 プッシュダウンオートマトン 構文解析
文脈依存 型検査などは通常の手続きで行う

括弧の対応は正規言語では表現できない(反復補題)ので、 字句と構文を分ける必要がある。 この階層は理論的な必然であって、便宜ではない。

参考文献#

  • Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools, 2nd ed. Pearson, 2006.
  • Robert Nystrom. Crafting Interpreters. Genever Benning, 2021.(全文公開) https://craftinginterpreters.com/
  • John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. Introduction to Automata Theory, Languages, and Computation, 3rd ed. Pearson, 2006.
ノート一覧を閉じる