Appearance
序言
作为前端开发者,Babel、Webpack、ESLint 这些工具是日常工作中不可或缺的一部分。你可能已经非常熟悉它们的配置和使用方式。但你是否思考过:这些工具是如何"读懂"你写的代码的?
当 ESLint 准确指出代码中的风格问题,当 Babel 将 ESNext 语法转换为 ES5,它们的内部究竟是如何工作的?对于许多开发者来说,这个过程仍然是一个"黑盒"。
这本书的目标,就是帮你打开这个黑盒。核心切入点是解析器(Parser)和它所构建的抽象语法树(Abstract Syntax Tree, AST)。
为什么你应该阅读这本书
编译原理相关的书籍往往充斥着复杂的理论和数学公式,这让很多实践者望而却步。
本书采用了一种不同的方法。
我们不从枯燥的理论开始,而是通过一个可动手实践的项目——从零开始构建一个迷你版的 JavaScript 解析器 mini-acorn——来学习核心概念。我们会将解析器拆解为一系列可理解、可实现的功能模块。你将亲手编写每一行代码,看到一串字符如何被转化为结构化的 Token,再被构建成一棵 AST。
通过这段学习过程,你将获得:
- 扎实的技术基础:真正掌握解析器、词法分析、语法分析、AST、作用域等核心概念。
- 思维方式的转变:从工具的使用者,成为能够理解工具原理的开发者。
- 职业发展的助力:这些底层知识是前端架构师、工具链开发者等高级岗位的重要基础。
本书的结构与 mini-acorn
全书分为五个部分:
- 第一部分:解析器基石。了解编译原理的基本概念和 Acorn 的架构设计。
- 第二部分:词法分析。学习如何将代码字符串拆解成 Token 序列。
- 第三部分:语法分析。这是本书的核心,学习递归下降和运算符优先级解析等技术,将 Token 组装成 AST。
- 第四部分:语义分析与高级语法。深入类、模块和作用域等复杂语法结构。
- 第五部分:高级工程实践。实现插件化、错误恢复、性能优化等工程特性。
我们构建的项目 mini-acorn 以 JavaScript 解析器 Acorn 为参考。它是一个精简但完整的实现,能够承载本书讲解的所有核心原理。
开始之前
如果你对代码的底层原理感兴趣,希望深入理解日常使用的工具是如何工作的,这本书适合你。
感谢你选择码书(CoderBook),让我们开始这段学习之旅。