编译原理实战课
宫文学
北京物演科技CEO
新⼈⾸单¥29.9
3175 人已学习
课程目录
已更新 39 讲 / 共 53 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (2讲)
开篇词 | 在真实世界的编译器中游历
免费
学习指南 | 如何学习这门编译原理实战课?
预备知识篇 (9讲)
01 | 编译的全过程都悄悄做了哪些事情?
02 | 词法分析:用两种方式构造有限自动机
03 | 语法分析:两个基本功和两种算法思路
04 | 语义分析:让程序符合语义规则
05 | 运行时机制:程序如何运行,你有发言权
06 | 中间代码:不是只有一副面孔
07 | 代码优化:跟编译器做朋友,让你的代码飞起来
08 | 代码生成:如何实现机器相关的优化?
知识地图 | 一起来复习编译技术核心概念与算法
真实编译器解析篇 (19讲)
09 | Java编译器(一):手写的编译器有什么优势?
10 | Java编译器(二):语法分析之后,还要做些什么?
11 | Java编译器(三):属性分析和数据流分析
12 | Java编译器(四):去除语法糖和生成字节码
13 | Java JIT编译器(一):动手修改Graal编译器
14 | Java JIT编译器(二):Sea of Nodes为何如此强大?
15 | Java JIT编译器(三):探究内联和逃逸分析的算法原理
16 | Java JIT编译器(四):Graal的后端是如何工作的?
17 | Python编译器(一):如何用工具生成编译器?
18 | Python编译器(二):从AST到字节码
19 | Python编译器(三):运行时机制
20 | JavaScript编译器(一):V8的解析和编译过程
21 | JavaScript编译器(二):V8的解释器和优化编译器
22 | Julia编译器(一):如何让动态语言性能很高?
23 | Julia编译器(二):如何利用LLVM的优化和后端功能?
24 | Go语言编译器:把它当作教科书吧
25 | MySQL编译器(一):解析一条SQL语句的执行过程
26 | MySQL编译器(二):编译技术如何帮你提升数据库性能?
热点问题答疑 | 如何吃透7种真实的编译器?
不定期加餐 (2讲)
不定期加餐1 | 远程办公,需要你我具备什么样的素质?
不定期加餐2 | 学习技术的过程,其实是训练心理素质的过程
期中复习周 (3讲)
划重点 | 7种编译器的核心概念与算法
期中考试 | 这些编译原理知识,你都掌握了吗?
用户故事 | 易昊:程序员不止有Bug和加班,还有诗和远方
现代语言设计篇 (4讲)
27 | 课前导读:学习现代语言设计的正确姿势
28 | 前端总结:语言设计也有人机工程学
29 | 中端总结:不遗余力地进行代码优化
30 | 后端总结:充分发挥硬件的能力
编译原理实战课
15
15
1.0x
00:00/00:00
登录|注册

28 | 前端总结:语言设计也有人机工程学

宫文学 2020-08-17
你好,我是宫文学。
正如我在上一讲的“课程导读”中所提到的,在“现代语言设计篇”,我们会开始探讨现代语言设计中的一些典型特性,包括前端、中后端、运行时的特性等,并会研究它们与编译技术的关系。
今天这一讲,我先以前面的“真实编译器解析篇”所分析的 7 种编译器作为基础,来总结一下它们的前端技术的特征,为你以后的前端工作做好清晰的指引。
在此基础上,我们还会进一步讨论语言设计方面的问题。近些年,各种新语言都涌现出了一个显著特征,那就是越来越考虑对程序员的友好性,运用了人机工程的思维。比如说,自动类型推导、Null 安全性等。那么在这里,我们就一起来分析一下,要支持这些友好的语法特征,在编译技术上都要做一些什么工作。
好,首先,我们就来总结一下各个编译器的前端技术特征。

前端编译技术总结

通过前面课程中对 7 个编译器的解读分析,我们现在已经知道了,编译器的前端有一些共性的特征,包括:手写的词法分析器、自顶向下分析为主的语法分析器和差异化的语义分析功能。

手写的词法分析器

我们分析的这几个编译器,全部都采用了手写的词法分析器。主要原因有几个:
第一,手写的词法分析实现起来比较简单,再加上每种语言的词法规则实际上是大同小异的,所以实现起来也都差不多。
第二,手写词法分析器便于做一些优化。典型的优化是把关键字作为标识符的子集来识别,而不用为识别每个关键字创建自动机。V8 的词法分析器还在性能上做了调优,比如判断一个字符是否是合法的标识符字符,是采用了查表的方法,以空间换性能,提高了解析速度。
第三,手写词法分析器便于处理一些特殊的情况。在 MySQL 的词法分析器中,我们会发现,它需要根据当前字符集来确定某个字符串是否是合法的 Token。如果采用工具自动生成词法分析器,则不容易处理这种情况。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《编译原理实战课》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥29.9
立即订阅
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
返回
顶部