2016-12-31 言語のしくみ その1 言語のしくみ まつもとゆきひろ 言語のしくみ作者: まつもとゆきひろ出版社/メーカー: 日経BP社発売日: 2016/12/22メディア: 単行本この商品を含むブログ (1件) を見る今年の年末年始の勉強本の紹介です。 1-2 言語処理系の仕組み 「プログラミング言語」 =「言語」+「言語処理系」 言語 「言語」=「文法」+「語彙」 文法:その言語で記述できる表現の集合。 語彙:その言語が呼び出せる機能の集合。ライブラリで追加は可能であるが、言語デザインにおいては「その言語が初めから備えている組み込み機能」となる。 言語処理系 「言語処理系」=「コンパイラ(翻訳)」+「ライブラリ(語彙)」+「ランタイム(実行環境)」 ランタイム:機械語の実行環境 ランタイムの例として仮想マシン(ランタイムの心臓部は後述の「プロセスバーチャルマシン」)がある。 バイトコード:仮想マシンが実行するコンパイル結果の機械語 インタープリタ型言語では、コンパイラとランタイムは一体化しているため、外部からはソースコードを変換しないで実行しているように見える。 コンパイラ型言語では、実行形式のファイルを生成するためランタイムは不要。 コンパイラ 「コンパイラ」:「字句解析」→「構文解析」→「コード生成」→「最適化」 字句解析:「文字列であるソースコードをトークンの列に変換すること」 トークン:構文解析が対象とする予約語・数値・文字列・演算子等の「意味のある塊」 字句解析ツールとして「lex」がある。ここでは「何がトークンか」を定義する。 構文解析:「トークンが文法に適しているかをチェックし、文法に即した処理を行う」 BNFで「文法」を定義する。ツリー構造を生成。 コード生成:「構文解析処理で生成した木構造をたどりながら機械語を生成する」