从头开始构建解析器
编程语言的递归下降解析器
讲师:Dmitry Soshnikov
双语IT资源独家Udemy付费课程,独家中英文字幕,配套资料齐全!
用不到1/10的价格,即可享受同样的高品质课程,且可以完全拥有,随时随地都可以任意观看和分享。
您将学到什么
- 递归下降解析器
- 为完整的编程语言构建解析器
- 自上而下的解析
- 抽象语法树 (AST)
- 不同的 AST 格式
- 左递归
- Tokenizer 和 Tokens
- 正则表达式规范
探索相关主题
- 算法
- 编程语言
- 发展
要求
- 基本数据结构和算法
描述
解析或语法分析是设计和实现编译器的首要阶段之一。编程语言的语法设计得当是用户青睐和选择您的语言的一大动机。
注意:这是一门关于构建手动递归下降解析器的实用课程。如果您对解析理论和自动算法感兴趣,您也可以考虑[解析算法]课程。
递归下降解析器是一组在实践中广泛用于许多生产编程语言的解析器。与自动解析算法相比,手动实现允许完全控制解析过程并处理复杂的构造,而这在自动解析器中可能无法实现。
此外,从头开始实现一个完整的手动解析器可以从内部理解和观察这个过程,揭开内部结构的神秘面纱,并将构建解析器变成一项有趣的工程任务。
在从头构建解析器课程中,我们深入研究纯粹的实际实现、构建和学习解析器的不同方面。
在本课程中,您将学习递归下降解析的概念,了解什么是Tokenizer以及它如何与Parser模块协作,了解什么是抽象语法树 (AST),以及如何获得这些 AST 的不同格式,什么是“前瞻”和预测解析,并最终为类似于 Java 或 JavaScript 的完整编程语言构建解析器。
实现解析器还可以使您对其他编程语言的实际使用更加专业。
此课程适合哪些人?
本课程适合任何好奇的工程师,他们希望获得构建复杂系统的技能(构建编程语言的解析器是一项非常先进的工程任务!),并获得构建此类系统的可转移知识。
如果您对编译器、解释器和源代码转换工具特别感兴趣,那么本课程也适合您。
本课程的先决条件是基本数据结构和算法:树、列表、遍历和正则表达式。
用于实现什么?
由于我们构建的语言在语法上与 JavaScript 或 Java 非常相似,因此我们专门使用 JavaScript — 它结合了函数式编程、基于类和基于原型的 OOP 的优雅多范式结构非常适合。
许多工程师都熟悉 JavaScript,因此立即开始编码应该会更容易。但是,我们不使用非常特定于 JS 的构造,因此解析器的实现可以轻松转移到您选择的任何其他语言。
注意:我们希望我们的学生能够真正遵循、理解并亲自实现解析器的每一个细节,而不是仅仅从最终解决方案中复制粘贴。该语言的完整源代码可在视频讲座中找到,展示和指导如何构建特定模块。
这门课具体讲了什么?
本次讲座的主要特点是:
- 简洁明了。每堂讲座内容丰富、简洁明了,并描述与主题直接相关的信息,不会分散与主题无关的材料或演讲的注意力。
- 动画演示与实时编辑注释相结合。这使得主题更容易理解,并显示对象结构如何(以及何时)连接。静态幻灯片对于复杂的内容根本不起作用。
- 端到端的现场编码课程,并附有作业。课程视频讲座中呈现了从头到尾的完整源代码
课程内容是什么
课程分为四部分,共18讲,每讲有多个子主题。以下是内容表和课程安排。
第一部分:基本表达式和Tokenizer
在本部分中,我们描述了基本表达式,例如数字和字符串,并构建了使用正则表达式进行操作的 Tokenizer 模块。
第二部分:程序结构
在本部分中,我们将讨论程序结构,例如语句和语句列表、块和递归生成规则。此外,我们还讨论了不同的 AST 格式并开始构建更复杂的表达式。
第三部分:控制流和函数
在本部分中,我们实现变量、赋值、使用运算符优先级并引入函数抽象。此外,我们还定义控制结构,例如 If 语句和迭代循环。
第 4 部分:面向对象编程
课程的最后一部分我们将实现类和对象,讨论属性和数组访问。此外,我们还实现了通用函数和方法调用,并构建了最终的解析器可执行文件。
本课程适合哪些人:
- 任何好奇的工程师
显示更多显示较少
如果你有能力,请务必支持课程的原创作者,这是他们应得的报酬!
本站收取的费用,仅用来维持网站正常运行的必要支出,从本站下载任何内容,说明你已经知晓并同意此条款。