pythonでコンパイラを自作してみた。 コンセプトはこんな感じ pythonで実装 (C言語とかじゃなくて) x86_64アセンブラコードを出力 (自作仮想マシン上で動くとかじゃなくて) パーサも自作 (yaccに頼るとかじゃなくて) 実用性はとくに考慮しない (楽しく作って動けばOK) 実装した順に紹介 第一段階 とりあえず動くものを実装 変数宣言や代入や四則演算を実装。パーサも簡単なものなので、ほとんど抽象構文木を手書きしてる感じ。 第二段階 バックエンドを実装 パーサは貧弱なままだけど、配列とか名前空間とか関数呼び出しとかを実装。末尾再帰ぽい機能もオレオレ実装。 第三段階 フロントエンドを実装(完成版) BNF記法で文法を定義し、SLRパーザを実装。 補足(追記) Linux環境、python3系で実行してください。 出力はGNU Assemblerです。 また、ソースコードも少し