27++'s Report

東京大学で行われた「大規模ソフトウェアを手探る」実験においてgccコンパイラーに機能の追加を行った。その際の奮闘を描いた日記(風レポート)。


このブログには東京大学電子情報・電気電子工学科にて行われた「外規模ソフトウェアを手探る」実験において使用の変更、追加を行ったgccについて書かれています。実験日に沿った日記風レポートとなっていますが、実際の進捗とブログの進捗には多少の差があることをここに断らせていただきます。
行ったことは"-o"オプションなしでhoge.cをコンパイルしたときhoge.outとなる変更、及び文末の";"の抜けを自動で補填する変更である。

まとめ(変更箇所の紹介記事リンクとgccの仕組み)

手探るgccのソースコードのダウンロード方法(初日)



文の意味変わらないし、句読点ってなんなん?(3)

最終日を残して(実際の最終日は投稿日ではないのだがトップで断っている)だいたい実装を終えてしまった僕達であったが、";"落としたらいけない反例が見つかってしまった…

それは変数宣言後の";"である。つまり、
int main(){
  int i
  i=1
  printf("%d\n",i)
}
コンパイラーを通らないのだ。中間報告の際に友人や先生方から、「int ihoge」となっている可能性が";"によって否定されるからではないか、というアドバイスを頂いていたので(つまり変数宣言時は";"は単なる句読点としての役割以外にも役割があるのだ!)早速その構造の解明にとりかかった。

…のだが、結論から言うとわからなかった。一体どこで宣言の処理をしているのか皆目見当がつかない。
make_treeのような関数があり、そのなかで構文解析をしているように考えられるが再起の回数が多く追い切ることができなかった。もし次にまたgccを手探ることがあったならばここに再チャレンジしてみたい。