• 关于

    我是生活在上海的一名程序员,这里是我的主页空间,用来记录我的生活历程、学习笔记和点滴思考。  

  • 栏目

  • 日历

    September 2010
    M T W T F S S
    « Mar    
     12345
    6789101112
    13141516171819
    20212223242526
    27282930  

While語言的解釋器

假期抽了兩天時間,集中精力學習Haskell的Parsec庫,初次嘗試了組合子(Combinator)編程,并且實現了一個While語言的解釋器(源碼在這里)。

Parsec庫是Haskell上的一種單子式分析器組合子(monadic parser combinator)函數庫。它使得原本復雜的語言解析工作變得非常容易。雖然使用了很多單子(Monad)技術,但是我對于這個課題依然還有很多疑惑,還要隨著實踐再提高。

While語言是我在Neil D. Jones的書《可計算性與復雜性—從編程的視角看》上看到的一種簡單而優美的語言。這個語言由Hanne Riis Nielson和Flemming Nielson在1990年代發明,大概是為了作為形式語義分析的目標語言而引入。While語言只有表達式求值、賦值和DoWhile語句,非常簡單,但卻也是圖靈完全的(Turing Complete)。

盡管非常簡單,但是由于DoWhile語句需要延遲求值,我們不得不需要一個簡易的運行時(Runtime)管理。這一點是我剛開始沒有意識到的。

學無止境,常感嘆自己所知太淺,繼續努力吧。

Printed from: http://www.mingli-yuan.info/archives/91 .
© Mingli Yuan 2010.

1 Comment   »

  1. fdcn says:

    羨慕中。

RSS feed for comments on this post , TrackBack URI

Leave a Comment