2008年12月25日

利用Delect設計方言

REBOL具有豐富的Literal,除了可以提高程式的「可讀性」和「可寫性」之外,也可以方便設計方言(dialect,也就是所謂的DSL)。這一點是其他語言遠比不上REBOL的。

以往,設計REBOL方言的方式,是利用Parse函數。在REBOL 3.0之後,又多了一個方式,就是利用Delect。Delect是DEcode diaLECT的意思。REBOL內部的方言,許多都是利用Delect做出來的。

大多數的方言,都會定義一些關鍵字(keyword)。每個關鍵字後面可以有0到多個參數。有些時候,這些參數出現的次序無所謂,因為透過型別就可以推測出參數的意義。例如:「Circle 100x100 50」與「Circle 50 100x100」,雖然100x100和50的出現次序不同,但是都可以讓我們認為這是要表達一個「圓心在100x100」,半徑是50的圓。所以處理這類方言的時候,值的次序不重要,重要的是值的型別,這種方言用Delect設計會相當容易。

良好的方言,應該要方便學習與使用。放寬參數的次序,可以幫助使用者學習與使用方言。以上面的Circle例子來說,使用者就不需要牢記,到底是先寫半徑再寫圓心,還是先寫圓心再寫半徑。

關於Delect的用法,請見DocBase的這篇說明。我以後也會寫文章說明Delect的詳細用法。

沒有留言: