Up Next

3.1  インタプリタとは

インタプリタ(interpreter)は,文字列を受け取って,それを特定の プログラミング言語のプログラムとして解釈して,実行結果を計算する計算機 プログラムである.よってインタプリタは,解釈するプログラミング言語の シンタックス(syntax),つまり,どのような文字列がプログラムをな すか,と,セマンティクス(semantics),つまり,プログラムがどの ように実行されるか,のふたつを間接的に定義しているといえる.コンパイラ もまた,あるプログラミング言語の構文と意味を規定しているが,入力プログ ラムから,その実行結果を計算するかわりに,別の(多くの場合,アセンブリ 言語などより低級な)プログラミング言語に翻訳した結果を出力とするプログ ラムである.その意味では,インタプリタとコンパイラではセマンティクスの 与え方が違っているといえる.

さて,インタプリタ自体もプログラムであるから,なんらかのプログラミング 言語で書かれている.このとき,「インタプリタ自体が書かれているプログラ ミング言語」を定義する言語(defining language)といい,「インタ プリタが入力として受け取るプログラミング言語」を定義される言語(defined language)という2. 本実験では,
定義する言語 = Objective Caml
定義される言語 = mini Scheme
として進めていく.Objective Camlプログラムの記述にはタイプライタ体 (abcde)を,mini Schemeプログラムにはサン・セリフ体 (abcde)を用いて区別する.

典型的なインタプリタは,字句解析・構文解析・解釈部から構成される. 字句解析・構文解析はコンパイラと同様に,文字列からプログラムの抽象構文 木を生成する過程で,定義される言語のシンタックスを規定している.解釈部 分は,セマンティクスを定義していて,抽象構文木を入力としてプログラムの 実行結果を計算する部分で,インタプリタの核となる.


Up Next