言語処理系
概要
言語処理系 とは、任意のプログラミング言語で書かれたプログラムから、対象の計算機上で実行可能なプログラムを生成するソフトウェアである。言語処理系 のおかげで、プログラマはマシンコードを直接記述する代わりに高水準言語を利用できるため、プログラミングの複雑さが大幅に低減される。言語処理系には、大別して インタプリタ と コンパイラ がある。 インタプリタ (interpreter, 通訳系)
言語の意味を解析しながら、その意味する動作を実行する。
コンパイラ (compiler, 翻訳系)
言語を他の言語に変換し、その言語のプログラムを計算機上で実行させる。
狭い意味では、言語を機械語に変換して実行する ものを指す。ただし、他の言語あるいは仮想機械コードに変換するものもコンパイラと呼ぶ。例えば、TypeScript から JavaScript への変換は、公式でコンパイルと呼ばれていたりする。このような他の言語に変換するときは translator, トランスパイラと呼ぶこともある。 基本構成
1. 字句解析 (lexical analysis)
文字列を言語の要素 (token) の列に分解する
2. 構文解析 (syntax analysis)
token 列を AST (abstract syntax tree) に変換する 3. 意味解析 (semantics analysis)
4. 最適化 (code optimization)
中間コード を変形して、効率の良いプログラムに変換する 5. コード生成 (code generation)
オブジェクトプログラム の言語に変換し、出力する
https://gyazo.com/f1a39b6a9581394fc0ca9bc6b3857e97
参考