2009-01-03

家でゆっくり

家でゆっくり過ごす. ここのところ,(疲労の割に)あまり睡眠時間がとれてなかったので,昼寝も.

作業再開

コンパイラ作りという作業がまだ残っている. (それにレポート執筆も…っ!!) みなさ〜ん,早めに取り組んだ方が絶対いいですよ〜.

現状の確認

現在のコード数は2160行だが,総機能に対して,7割くらい実装できていると思っている. 見通しをすっきりさせるため,簡単に今の状況を確認しておこう.

開発環境

上の画像は,今の開発環境. ファイルが無闇に多く,フォルダ整理したいところだが, 今回はしない方向で.

タスク管理機能も使うようになった. ただ,序盤ではタスクが多すぎて使いにくいと思うので, 今の段階からでの使用で適正だったと思う.

以前の日記でも述べたとおりに大体は開発が進んでいる. rev145からrev236まで進んでいる. 最初はjavadocの追加・不要関数の廃棄・肥大化したファイルの分割など,ソースの整理. コピペミスでバグが混入したが,SVNのおかげですぐに原因究明でき,解決.

rev161あたりから,コード生成するためのコード生成(ヤヤコシイな(^_^;))に入り, まずはデータ構造を固める. 使い勝手のよい,tmpfile()を使い,構造体も少々いじる. そこからは,コード生成関数gen_○○をつくり, 適切な場所で,適切なパラメータで呼ぶようにした. また,最適化も視野に入れ,同時並行的に目的ファイルを生成しないようにする. ここで,tmpfile()の威力が発揮された.

あとは,ひたすら,CASLの仕様に従ったコード生成ルーチンを書く. 有る程度進んできたので,あと「正月休み」に入るので, eclipseのタスク管理機能*1を使い,残りタスクを明確化した.

というわけで,今までの開発の流れをざっと追ってきた.

*1 「//TODO 〜」とソースに書くだけでよい

今後の課題

残るタスクは15. 開発時間は,概算で235分. (単体テスト時間を含む)

タスク ソース 開発時間(概算)
gen_code_CPYSF , gen_code_CPYZFを見て立っていたらコード生成 gen_code.c 20分
仮パラメータ領域宣言ファイルを連結する gen_code.c 10分
手続きファイルに対して,グローバル変数の変位を追記する gen_code.c 20分
手続きファイルも,最終物へ連結する gen_code.c 10分
if文のコード生成 s_CompoundStatement.c 20分
while文のコード生成 s_CompoundStatement.c 15分
手続き呼び出し文のコード生成 s_CompoundStatement.c 30分
代入文のコード生成(少し出来ているが) s_CompoundStatement.c 15分
入出力文のコード生成 s_CompoundStatement.c 30分
各手続きにグローバル変数の増分情報を書いていく s_Program.c -
ローカル変数の領域を宣言する s_sc_Block.c 10分
仮パラメータ領域宣言ファイルに対して領域宣言(DS)する s_sc_Block.c 15分
使用したグローバル変数の変位を(DC)する s_sc_Block.c 15分
使用した仮パラメータの変位を(DC)する s_sc_Block.c 15分
GR3に対する符号の処理 s_sc_Expression.c 10分
合計 235分

甘めの見積もりだが,確実に明日中には終わるだろう. 単体テストは確実に行いたいね〜. 結合テストでは手間がかかるし.

結合テストは2時間もあれば終わるだろう. レポート執筆は6時間くらいかな. なんとか,8日には間に合いそうだ.