跳转到内容

鹦鹉虚拟机/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

[编辑 | 编辑源代码]
上一个 鹦鹉虚拟机 下一个
鹦鹉内部 运行核心
华夏公益教科书