簡易Compiler(其實是Interpreter) : Micro 實作

昨天

花了一個晚上的時間把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

下載

micro直譯器

有興趣可以載回去玩玩看,不過同學請注意,參考看看就好,要拿來當作業交被逮到可不關我的事= =

This entry was posted in C/C++, 中文文章, 分享 and tagged , , . Bookmark the permalink.

7 Responses to 簡易Compiler(其實是Interpreter) : Micro 實作

  1. 日落 says:

    我記得教授說要用 C/C++ 寫
    還是你連 windows 都寫掉了? @@

  2. victor says:

    這是Compiler作業= =
    不是programming language,我本來打算連程式語言都一起寫掉,誰知道昨晚網頁開不起來,所以就沒有寫

    Windows都寫掉? 什麼意思@@?

  3. doomleika says:

    請問你是怎麼知道有Interpreter Pattern的?
    (這應該不是常見的pattern吧….)

  4. doomleika says:

    argh, nevermind.原來是GoF的23 patterns 之一

  5. victor says:

    Head First Design Pattern最後面幾頁有提到

  6. victor says:

    阿~ 正是因為不常見所以我才記得 XD
    看到時心理一直想說寫parser可以用這個pattern

  7. 日落 says:

    我有點想去敗家買那一本 ~”~