昨天
花了一個晚上的時間把Compiler作業Micro直譯器寫出來了,為啥說它是直譯器,因為光寫文法解析實在很無聊,它的語法又太簡單,反正讓它能執行也多沒幾行程式,就順手讓它可以直接執行,還蠻有趣的,第一次寫比較正規的語法解析器,我想起很久很久以前我寫過一個滑鼠鍵盤的巨集程式
就有解析自創的簡單語法,可是方法實在很暴力很蠢 XD,用了一些五四三的方法硬湊出來,現在我寫完這個作業覺得scanner和parser這樣才是比較正規的做法,我還用了Interpreter Pattern來實作
Micro
課本上的Micro語言實在有點簡單過頭了,只有輸入、輸出、運算而已,運算也只有加和減,本來想修改的,可是又要設計BNF和考慮運算優先順序等等麻煩的問題就打消念頭,只寫了兩個簡單的程式
begin
read (a, b, c);
sum := a + b + c;
write (sum);
end
begin
read (f1, f2);
f3 := f1 + f2;
f4 := f2 + f3;
f5 := f3 + f4;
f6 := f4 + f5;
f7 := f5 + f6;
write (f1, f2, f3, f4, f5, f6, f7);
end
下載
有興趣可以載回去玩玩看,不過同學請注意,參考看看就好,要拿來當作業交被逮到可不關我的事= =
我記得教授說要用 C/C++ 寫
還是你連 windows 都寫掉了? @@
這是Compiler作業= =
不是programming language,我本來打算連程式語言都一起寫掉,誰知道昨晚網頁開不起來,所以就沒有寫
Windows都寫掉? 什麼意思@@?
請問你是怎麼知道有Interpreter Pattern的?
(這應該不是常見的pattern吧….)
argh, nevermind.原來是GoF的23 patterns 之一
Head First Design Pattern最後面幾頁有提到
阿~ 正是因為不常見所以我才記得 XD
看到時心理一直想說寫parser可以用這個pattern
我有點想去敗家買那一本 ~”~