#erlang #ir #compiler #tree #testing #ecosystem #front-end

eirproject/libeir_lowerutils

Erlang生态系统通用IR

1 个不稳定版本

0.1.0 2019年8月15日

#73 in #erlang

249 stars & 14 watchers

MIT/Apache

2KB
54 代码行数(不含注释)

Eir 项目

Erlang 编译器和 IR,用 Rust 实现

详细信息

当前功能

  • 基于 Thorin 的统一 IR 表示形式名为 Eir
  • Erlang 前端
  • 核心前端
  • 模式匹配编译遍历
  • 基本的优化和清理遍历
  • 用于测试的朴素解释器

项目分为几个 crate

  • libeir_ir - 包含核心 Eir IR 数据结构、验证、打印
  • libeir_syntax_erl - Erlang 的前端,降低到 Eir。
  • libeir_syntax_core - Core Erlang 的前端,降低到 Eir。
  • libeir_passes - 在 Eir 上操作的编译器遍历。
  • libeir_lowerutils - 将 Eir 降低到 SSA 形式的工具。
  • libeir_interpreter - Eir 的朴素解释器。用于运行 OTP 测试套件。
  • libeir_intern - 符号内省。由大多数其他 crate 使用。
  • libeir_diagnostics - 源跨度处理和诊断打印。
  • libeir_util - 其他 crate 使用的工具集合。
  • pattern-compiler - 一个通用的模式匹配树编译器。
  • tools - 与 IR 一起使用的 CLI 工具。

依赖

~1.5MB
~18K SLoC