- 著者は、Pythonコード500行でCコンパイラを書くという困難な挑戦に取り組んだ
- このコンパイラはシングルパスで、まず構文木を構築してから機械語へ変換する一般的な2パスコンパイラとは異なり、パース中にコードを生成する
- コンパイラのターゲットはWebAssemblyで、これは実用性よりも好奇心から生まれた選択である。レジスタが存在しないことやスタックマシンを使うことなど、WebAssembly特有の課題が強調されている
- 500行という制約のため、このコンパイラは構造体、列挙型、ユニオン、プリプロセッサディレクティブ、浮動小数点、8バイト型などの特定のC機能をサポートしていない
- このコンパイラは c-testsuite の220件のテストケース中34件を通過し、フィボナッチ数列を計算するプログラムを正常にコンパイルして実行できる
- コンパイラのコードについて詳細な分析を行い、C構文のさまざまな側面をどのように処理しているか、またWebAssemblyで作業するうえでどのような困難があるのかを説明している
- コンパイラの複雑さにもかかわらず、コード品質を犠牲にしてすべてをシングルパスで行えば、驚くほど簡潔にできることを示している
- この種のシングルパスコンパイラは、その簡潔さゆえにセルフホスティング言語の stage0 として非常に優れている可能性があると提案している
- sloccount ツールを使ってコード行数を測定しており、その際にコメント、docstrings、空白は除外している
1件のコメント
Hacker Newsの意見