Perl6的結構 - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- Perl6的結構 (http://www.webasp.net/article/8/7714.htm) |
| -- 作者:未知 -- 發佈日期: 2003-09-13 |
| Perl6的結構 摘要 源碼進入解釋器,解釋器產生一個語法樹(syntax tree)。 語法樹進入編譯器,編譯器產字節碼(bytecode)。 字節碼進入優化器(optimizer),優化器產生更多的(更好的)字節碼。 Runtime然後來處理進入的字節碼(可能是運行它,不過也有可能把它轉化為Java字節碼,或者.Net字節碼,或者可執行的Alpha 代碼(an alpha executable),或者編碼的DNA序列)。 Source Code +----------------+ |The Parser | +----------------+ Syntax Tree +-------------------+ |The Compiler | +--------------------+ Bytecode +---------------------------+ |Byteode Optimizer | +---------------------------+ Better Bytecode +------------+ |Runtime | +------------+ 計劃 解釋器將允許你改變這些規則。規則集(rule sets)定義了主要的語言(Perl, C, Python, Java, etc.),你可以為其他的語言撰寫新的規則(比如,沒有$ @ %等符號的Perl)。 運行時引擎(the runtime engine)將會時一個基於寄存器的虛擬機(a register-based virtual machine),而perl5的虛擬機時基於棧的(stack-based)。 重寫(revisit)Perl的一個主要原因是要去修復混亂的XS(XS是指用C/C++子程序來擴展Perl)的方式。除了用來執行Perl的函數,Perl5沒有用於擴展的API,所以擴展Perl需要大量繁瑣的工作。Dan和Larry的目標是要使C擴展的使用盡可能的簡單(Brian Ingerson的精彩的Perl5內聯模塊為此指明一些方向)。任何使用過XS的人都等著它的滅亡。 Perl5被設計成這樣一種方式,那就是當有C的時候,它就可以運行。近來,一些虛擬機(JVM, .NET)代替了C。所以,我們將看到,我們的自己的虛擬機不僅可以在有C的時候運行,而且同樣可以方便的將字節碼輸入到其他的虛擬機。 |
| webasp.net |