トランスコンパイラ
トランスコンパイラ（他にトランスパイラ、ソース・トゥ・ソースコンパイラ、などとも）は、あるプログラミング言語で書かれたプログラムのソースコードを入力として受け取り、別のプログラミング言語の同等のコードを目的コードとして生成する、ある種のコンパイラである。一般に、コンパイラが「比較すると高水準な言語のソースコード」を入力とし、「比較すると低水準な言語の目的コード」を、コンパイル結果として出力するものであったのに対し、トランスコンパイラは同じ程度の（抽象化の）水準のコードをコンパイル結果として出力する。
それらの処理系における具体的なコンパイルの処理、すなわち、入力から出力への変換において実際に行われることは、それぞれの処理系によってさまざまである。字句のレキシカルな変換やsyntactic sugar（糖衣構文）の展開といったような程度の場合もあれば、高度なコンパイラ最適化を施して機械語をコード生成するような、通常のコンパイラと全く同様の処理をおこなっているものもある。
たとえば、PascalのコードをCのコードへと変換するといったものや、「自動並列化コンパイラ」のように、見た目としては逐次的なfor文などで書かれいているコードを、OpenMPのような並列化メタデータやFortranのcodice_1文のような言語構造に変換する、といったものがある。
トランスコンパイルの別の目的は、基本的なプログラミング言語の次期バージョンを使う場合や、APIの後方互換性が壊れた場合などに、レガシーなコードから変換することである。プログラムの実行環境が変わる場合(例えば、Python 2からPython 3に変換する場合や古いAPIから新しいAPIに変換する場合)や、コンパイルによりプログラムのサイズが極端に大きくなったり実行速度が遅くなったりした場合はリファクタリングを行う。
トランスコンパイラは、元のソースコードの開発やデバッグを簡単に行うことができるよう、元のコードをコメントなどに残す（ことができる）ものもある。また、元のコードから変換した際に構文が大幅に変わった場合は、同等のコードには見えないようなコードに変換されることもある。元のコードから変換されたソースコードにマッピングを行うデバッグツールもある。
トランスコンパイラを主たる実装として開発されている言語の例としては, Coccinelle, CoffeeScript, Dart, Haxe, TypeScript, Emscriptenがある。