猫型エンジニアのブログ

プログラム/ネットワーク系の技術関連をまとめたページです 

言語のしくみ その1

今年の年末年始の勉強本の紹介です。

1-2 言語処理系の仕組み

言語
  • 「言語」=「文法」+「語彙」
  • 文法:その言語で記述できる表現の集合。
  • 語彙:その言語が呼び出せる機能の集合。ライブラリで追加は可能であるが、言語デザインにおいては「その言語が初めから備えている組み込み機能」となる。
言語処理系

「言語処理系」=「コンパイラ(翻訳)」+「ライブラリ(語彙)」+「ランタイム(実行環境)」

ランタイムの例として仮想マシン(ランタイムの心臓部は後述の「プロセスバーチャルマシン」)がある。

コンパイラ

コンパイラ」:「字句解析」→「構文解析」→「コード生成」→「最適化」

  • 字句解析:「文字列であるソースコードをトークンの列に変換すること」

トークン:構文解析が対象とする予約語・数値・文字列・演算子等の「意味のある塊」
字句解析ツールとして「lex」がある。ここでは「何がトークンか」を定義する。

  • 構文解析:「トークンが文法に適しているかをチェックし、文法に即した処理を行う」

BNFで「文法」を定義する。ツリー構造を生成。