2016-07-21 32 views
2

以下在ceylon/ceylon.ast項目中找到的示例顯示瞭如何編程構造一些AST並使其由錫蘭類型檢查器(com.redhat)進行類型檢查。 ceylon.compiler.typechecker.TypeChecker):如何將從ceylon.ast獲得的編譯單元提供給ceylon編譯器

https://github.com/ceylon/ceylon.ast/blob/master/source/test/ceylon/ast/samples/turingMachine/powerOfTwo.ceylon

什麼會隨後被推薦的方法要與類型化的語法樹稱爲編譯類型化語法樹 - 考慮到編譯單元的文件通常給出而不是類型化的語法樹(從ceylon.ast項目)到類型檢查器?

此問題與The Ceylon Typechecker: How to obtain the typed syntax tree?有關。

回答

0

生成一個AST然後將其與真實項目的上下文分開編譯似乎不是一個可行的選項。編譯器需要比單獨提供的AST更多的信息,並向編譯器提供缺省或僞造信息(例如文件名)仍然是一項複雜的任務。

另一方面,在實際項目的背景下將真實編譯單元的AST用作一種宏觀系統是沒有意義的,因爲錫蘭計劃可能有副作用,並且轉換必須考慮到這一點。此外,轉型規則應該是終止和融合的,並且應該用形式來表達,以便使程序變形者儘可能地容易。錫蘭的開關表達並不是它的正確工具。最壞的情況將是一個程序性的Ast變壓器,它可以改變程序性的la Groovy的AST變壓器。

一個例外將是錫蘭聲明性樹狀結構的轉變。這正是我想到的問題:讀取數據(不一定是錫蘭語法),並將它們提供給評估或可選編譯。

相關問題