跳轉到內容

鸚鵡虛擬機器/IMCC 和 PIRC

來自 Wikibooks,開放世界中的開放書籍

IMCC 和 PIRC

[編輯 | 編輯原始碼]

IMCC 和 PIRC 是 PIR 和 PASM 的兩個獨立解析器。兩者均使用 Lex 和 Yacc 編寫。

IMCC,即中間程式碼編譯器,是 Parrot 當前讀取 PASM 和 PIR 程式碼的前端。它是一個相對較舊的子系統,已被證明難以擴充套件或維護。在 Parrot 1.0 釋出之前,IMCC 可能是 PIR 和 PASM 的“官方”解析器。但是,未來的計劃是轉向更具擴充套件性和更易於管理的解析器,例如 PIRC。

IMCC 使用 Lex 詞法分析器和 Yacc 語法分析器的組合編寫。它包含許多元件,例如暫存器分配器和程式碼最佳化器。

從理論上講,PIRC 是比 IMCC 更好的 PIR 和 PASM 解析替代方案。但是,PIRC 目前尚未完成,並且尚未提供 IMCC 的功能集。PIRC 有兩種不同的實現:一種是手工編寫的遞迴下降解析器,另一種是基於多階段 Lex/Yacc 解析器。舊版本,即手工編寫的遞迴下降版本,已過時且不再維護。這裡我們只討論 PIRC 的新實現。

PIRC 分為三個不同的解析器

  1. "Heredoc" 結構的解析器,直接嵌入到檔案中的字串。
  2. 宏解析器和文字替換器。這是用於處理宏和常量的預處理器。
  3. PIR 和 PASM 其餘部分的解析器

像這樣分解任務可以使事情變得更簡單,並減少單個大型解析器所需的許多狀態和條件。

PIRC 當前狀態

[編輯 | 編輯原始碼]

PIRC 旨在取代 IMCC 成為 Parrot 的主要前端。但是,這種轉變可能要等到 Parrot 1.0 釋出之後才會進行。換句話說,這是一個重要的開發,但 Parrot 開發人員不會為了它而等待。

測試 IMCC 和 PIRC

[編輯 | 編輯原始碼]
上一個 鸚鵡虛擬機器 下一個
鸚鵡內部 執行核心
華夏公益教科書