文の意味変わらないし、句読点ってなんなん?(3)
最終日を残して(実際の最終日は投稿日ではないのだがトップで断っている)だいたい実装を終えてしまった僕達であったが、";"落としたらいけない反例が見つかってしまった…
それは変数宣言後の";"である。つまり、
int main(){
int i
i=1
printf("%d\n",i)
}
はコンパイラーを通らないのだ。中間報告の際に友人や先生方から、「int ihoge」となっている可能性が";"によって否定されるからではないか、というアドバイスを頂いていたので(つまり変数宣言時は";"は単なる句読点としての役割以外にも役割があるのだ!)早速その構造の解明にとりかかった。
…のだが、結論から言うとわからなかった。一体どこで宣言の処理をしているのか皆目見当がつかない。
make_treeのような関数があり、そのなかで構文解析をしているように考えられるが再起の回数が多く追い切ることができなかった。もし次にまたgccを手探ることがあったならばここに再チャレンジしてみたい。