2011年8月26日 星期五

[編譯器的研究]parse tree之後?

是的,如同標題,在 parse tree 完成之後,應該做些什麼?
原本我是有目的的,要幫 log 上顏色。
在寫完以下的程式之後,我感覺到一陣的空虛。

f = open("genOutput.htm","w")
f.write("<html>")
f.write("<body>")
f.write("<table border='1'>")
for i in ms.get_attr("msg"):
  f.write("<tr><td>"+str(i)+"</td></tr>")
f.write("</table>")
f.write("</body>")
f.write("</html>")
f.close()

這段程式會輸出一個 html,瀏覽器會看到

image

要更好看,當然要繼續下去改善,像是顏色,欄位。或是加上搜尋功能,過濾功能。
但是在繼續下去之前,我想到一件事。
在使用上,是不是要即時一點?
例如,有新的事件進來,要即時 scan/parse,而現在,scanner/parser 是整個檔案 parse。
而我認為最好是採遞增式的 scanner/parser,就減少卡畫面的機會,一方面使用者會有比較好的使用者經驗;另一方面,處理時也不會突然讓 cpu usage 大爆增。
所以我想在這裡停下來,不往下繼續走。而是回頭再修改之前的 scanner/parser。

當然,如果有人要從這裡開始往下走,(我想大概也沒人看我這系列吧),
應該就開始偏離編譯器的範圍,也就不太會用這個系列開頭了。

這個系列算是結束了嗎?
不!
而是要開始比較正式的朝向 scanner/parser 的方向,以解析程式語言為目標,
以產生可執行程式或輔助開發環境為目的。
log monitor 的部份,會另外再開一條路來做。
而且我想,會需要遞增式 scanner/parser 的經驗來幫助。
所以要先把遞增式 scanner/parser 做好才對。

下次再見!

沒有留言:

張貼留言