[解決済み] コンパイラはどのようにして自分自身をコンパイルすることができるのですか?
2022-04-21 22:40:51
質問
ウェブサイト上でCoffeeScriptを研究しています http://coffeescript.org/ というテキストがあります。
<ブロッククオートCoffeeScriptコンパイラは、それ自体がCoffeeScriptで書かれています。
コンパイラはどうやって自分自身をコンパイルできるのか、この文はどういう意味なのか?
どのように解決するのですか?
あるコンパイラの初版は、そのコンパイラに固有のプログラミング言語から機械的に生成することはできない。あなたの混乱は理解できる。言語の機能を増やした後のバージョンのコンパイラ(ソースは新しい言語の最初のバージョンで書き直されたもの)は、最初のコンパイラでビルドすることができます。そしてそのバージョンは次のコンパイラをコンパイルすることができ、その繰り返しとなります。以下はその例である。
- 最初の CoffeeScript コンパイラは Ruby で書かれており、バージョン 1 の CoffeeScript が生成されます。
- CSコンパイラのソースコードをCoffeeScript 1で書き直した。
- オリジナルの CS コンパイラは、新しいコード(CS 1 で書かれた)をコンパイラのバージョン 2 にコンパイルする
- コンパイラのソースコードに変更が加えられ、新しい言語機能が追加される
- 2番目のCSコンパイラ(CSで記述された最初のコンパイラ)は、改訂された新しいソース・コードをコンパイラのバージョン3にコンパイルする
- 各反復のために手順4と5を繰り返す
注:CoffeeScriptのバージョン番号がどのように振られているかは正確にはわかりません。
この処理は、通常
ブートストラップ
. ブートストラップ・コンパイラのもう一つの例として
rustc
のコンパイラです。
Rust言語
.
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン