2008/06/13

Compiler Final Project

做完了!助教竟然又把 global variable definition 限制在 class definition 最前頭,這真的有點把我惹毛了,誰理他啊 XD。(真要改其實只要改幾句文法就成了,但我才不改 XD。)HW4 的 wc 結果是

      94     239    1395 hw4.l
     709    1960   19210 hw4.y
     291     771    6359 symbol_table.c
     326     932    8033 CodeGen.c
    1420    3902   34997 total
Final project 則是
      96     244    1418 final.l
    1124    3126   32513 final.y
     504    1177    9673 symbol_table.c
     708    2444   21537 CodeGen.c
    2432    6991   65141 total
其中 lex 是因為發現有 bug 所以改了幾個字元 XD。yacc 多 400 行、symbol table 多 200 行、code generator 多 400 行,改得不算太多,代表當初設計得還不錯 XD。

這次的架構由我一手設計,然後把我需要的 symbol table 和 code generator 介面寫好、交給組員實作,最後成品拿回來和我寫的 parser 整合。雖然介面一變再變(一方面是我思考不周、一方面是作業的 spec 就一直變…),但整體運作模式似乎相當可行。雖然沒有《人月神話》描述的 "surgeon" 那樣地一手包辦而使整體完全和諧一致,但至少在設計上能達到相當近似的效果。

我個人是覺得 "surgical team" 模式很值得一試啦,尤其是我實在不習慣採取 "default and challenge" 立場看待一份不是我自己寫的 code ─ 這和我在知識論上採取的立場("prior grounding requirement")一致 XD。

--
所以更應該來發展 dependent types 了!XD

Labels: