新手上路 1小时前
主楼
来源:https://github.com/aalhour/awesome-compilers
这是一份面向编译器、解释器、运行时和虚拟机方向的精选资源清单,覆盖学习路径、经典教材、论文、课程、工具框架、真实项目与社区入口。

学习资料 / 书籍 / 通识总览

学习资料 / 书籍 / 入门书籍

学习资料 / 书籍 / 进阶书籍

学习资料 / 论文

学习资料 / 课程

学习资料 / 演讲与会议 / 频道

学习资料 / 演讲与会议 / 视频

学习资料 / 文章

学习资料 / 教程

学习资料 / 社区讨论

工具与框架 / 语言无关工具

  • B3: The Bare Bones Backend - WebKit 针对包含类 C 代码的过程优化 JIT 编译器。
  • Capstone - 轻量级多平台、多架构反汇编框架,绑定多种著名编程语言。
  • Keystone - 轻量级多平台、多架构汇编器框架,绑定到各种著名的编程语言。
  • LLILCL - 适用于。NET Core 的基于 LLVM 的编译器后端。
  • LLVM - LLVM 编译器后端框架。
  • MicroVM - 基于 MuVM 规范的编程语言开发“Mu”框架。
  • Movfuscator Compiler - M/o/Vfuscator 将程序编译成“mov”指令,并且仅编译“mov”指令。
  • QBE: The Quick Backend - 基于 SSA 的纯 C 嵌入式编译器后端。
  • Rubinius - 编程语言开发平台。
  • Summus - 使用 LLVM 作为后端的基本、可重用、编译器前端实现。
  • ZetaVM - 动态编程语言的多语言平台。

工具与框架 / C / C++

  • AsmJIT - 适用于 C++ 的完整 x86/x64 JIT 和远程汇编器。
  • GCC - GNU 编译器集合(C 作为后端)。
  • LCC - lcc 可重定向 ANSI C 编译器(C 作为后端)。
  • libFirm - C 库,提供基于图形的中间表示、优化和适合在编译器中使用的汇编代码生成。
  • libJIT - 独立于任何特定字节码、语言或运行时的通用即时编译器功能的库。
  • myJIT - 用于在运行时生成和执行机器代码的库。
  • OrangeC - Win32 C11/C++2014编译器和工具链。
  • PCC - 便携式 C 编译器(C 作为后端)。
  • Ragel - Ragel 状态机编译器。
  • TCC - Tiny C 编译器(C 作为后端)。

工具与框架 / CLR / .NET

  • Cecil - 用于生成和检查 ECMA CIL 格式的程序和库的库。
  • DotNetPELib - 用于在 C++11 中读写。net 程序集的库。
  • ILSpy - .NET反编译器。
  • Reflector - .NET反编译器。
  • Reflexil - 汇编代码编辑器,可作为其他。NET/CLR 工具的插件使用。

工具与框架 / D 语言

  • dunnart - LALR(1) 解析器生成器。
  • FancyPars-lite - 快速解析器生成器。
  • libdparse - 允许构建词法分析器和解析器的库。包含 D 语言本身的词法分析器和解析器。
  • llvm-d - LLVM 的 D 绑定。
  • Pegged - 设计、测试和生成 PEG 语法的解析器。

工具与框架 / Go

  • goyacc - YACC 在 Go 中的实现。标准 LALR(1) 解析器生成器。
  • LLVM Go binding - 官方 Go LLVM 绑定。

工具与框架 / Graal

  • Graal - 高性能多语言运行时。
  • Graal Core - 编译器和 Truffle 部分评估器。
  • Graal VM - Graal的多语言VM发行版。

工具与框架 / Haskell

工具与框架 / JavaScript

  • IRHudra - 用于显示 V8 和 Dart VM 优化编译器使用的中间表示的工具。
  • JISON - JavaScript 的上下文无关语法解析器生成器。
  • Nearley - 简单、快速、强大的 JavaScript 解析器工具包。
  • Ohm - 用于构建解析器、解释器、编译器等的库和语言。
  • PEG.js - JavaScript 的简单解析器生成器。

工具与框架 / JVM

  • ANTLR - 用于读取、处理、执行或翻译结构化文本或二进制文件的解析器生成器。
  • BYAAC/J - BYACC/Java 是 Berkeley v 1.8 YACC 兼容 Java 解析器生成器的扩展。
  • CGLIB - 用于生成和转换 Java 字节代码的高级 API 库。
  • FCP JVM - 用于生成符合 JDK v1.5+ 规范和 Dalvik VM 的 Java 字节代码的 JVM 后端。
  • JavaCC - Java 编译器构建和解析器生成器工具包。
  • JavaCPP Presets for LLVM - 用于轻松与 LLVM API 交互的库。
  • JFlex - JFlex 是一个用于 Java 的词法分析器生成器,具有完整的 Unicode 支持。
  • JLex - JLex是一个词法分析器生成器,可以与CUP结合使用。

工具与框架 / Kotlin

工具与框架 / Python

  • AST - Python内置的抽象语法树包。
  • Dis - Python 内置的反汇编程序包。
  • Parsing - 实现 LR(1) 解析器生成器以及 CFSM 和 GLR 解析器驱动程序的纯 Python 模块。
  • PLY - Python的lex和yacc解析工具的实现。
  • PyParsing - 创建和执行简单语法的替代方法,与传统的 lex/yacc 方法或使用正则表达式相比。
  • RPLY - 将 PLY 项目移植到 RPython。
  • RPython - RPython是一个用于实现动态语言的框架。

工具与框架 / Rust

  • Combine - Rust 解析器组合器库。
  • IronLLVM - Rust 的安全 LLVM 绑定。
  • LALRPOP - Rust 的 LR(1) 解析器生成器。
  • Nom - 解析器组合器框架。
  • PEG - PEG 解析器生成器。
  • Pest - PEG 解析器生成器。
  • RLS - Rust 语言服务器实现(又名 RLS)。

编译器与解释器 / 严肃项目

编译器与解释器 / 教学与玩具项目

  • Akilang - 使用 Python 和 LLVM 构建的简单语言编译器。
  • amacc - 小型 C 编译器为 Arm 架构生成 ELF 可执行文件。
  • Black - 反射编程语言“Black”的方案解释器,作者:Kenichi Asai。
  • C4 - C 语言的 4 个函数。
  • CarpVM - 用 C 语言实现实验性 VM。
  • Charly - 用 Crystal 编写的动态类型语言的解释器。
  • Dale - Lisp 风格的 C:一种系统编程语言。
  • EasyLang - 简易编程语言/VM。
  • Eschelle - 具有 VM 和 JIT 的开源跨平台多范式语言。
  • Gecho - C 中的简单堆栈语言实现。
  • gocaml - Go 和 LLVM 中的最小函数式编程语言实现。
  • gone - 名为 Gone 的小型编程语言的编译器,使用 Python 3.6、SLY 和 llvmlite 实现。作为 2018 年 1 月 编写编译器课程 的一部分开发,由 David Beazly 监督。
  • Hython - Haskell 支持的 Python 3 解释器。
  • llgo - 用 Go 编写的 LLVM 的 Go 前端。
  • MAL - Make a Lisp - 以 64 种语言实现的受 Clojure 启发的 Lisp 解释器。
  • MetaScala - Scala 中的 Metacircular JVM 实现。
  • mini-js - 1K LoC 中的实验性自托管 JavaScript 编译器。
  • MunVM - C 语言的 Lua 虚拟机和编译器。
  • MY-BASIC - 具有现代范式的 C 语言嵌入式 BASIC 方言解释器。
  • oberonc - 适用于 Oberon-07 编程语言的单通道自托管编译器。它针对 JVM。
  • Poprc - Popr 语言的编译器。
  • PyCOOLC - 用 Python 3 编写的 COOL 编程语言编译器。
  • RabbitVM - 基于 RISC 的 C 语言 VM 实现。
  • Squint - 用于教育编译器生成基于堆栈的程序集的窥孔优化器。
  • StackVM - 具有集成 VRAM 显示器的虚拟机。
  • stack_cpu - 堆栈机模拟器。
  • The Super Tiny Compiler - JavaScript 中的小型教育编译器项目。
  • tinyc.c - C 中的 Tiny-C 语言编译器。
  • tisp - 《时间就是空间》编程语言解释器。
  • Ultra Tiny Compiler - 另一个微型编译器,代码不到 90 行。

运行时与虚拟机

  • CoreCLR - .NET 的公共语言运行时。
  • HHVM - Facebook 的开源 VM,用于运行 Hack 和 PHP 程序。

博客

社区

  • /r/Compilers - 有关编译器理论和发展的 Reddit 子社区。
  • /r/ProgrammingLanguages - Subreddit 社区,致力于讨论编程语言、编程语言理论、设计、语法和编译器。

垂直专题

  • miniKanren.org - miniKanren 和 microKanren 的论文、演讲和实施。
😀 😊 😵‍💫 😡 🤝 🙏 👍 👎 ❤️