编译器构造
编译器构造 马 融
Todo list 网站 分组 论坛 日程表 数据 语法说明 评分细则
Todo List • 网站 • 分组 • 论坛 • 日程表 • 数据 • 语法说明 • 评分细则
参考书籍 《自制编译器》——青木峰郎 ·虎书——《现代编译程序实现》 PLP——《程序设计语言—一实践之路》 LP——《编程语言实现模式》 Terence parr CaC—《 Crafting a Compiler)) Charles m. Fischer EaC——《编译器设计》 Keith d. Cooper
参考书籍 • 《自制编译器》——青木峰郎 • 虎书——《现代编译程序实现》 • PLP——《程序设计语言——实践之路》 • LIP——《编程语言实现模式》Terence Parr • CaC——《Crafting a Compiler》Charles N. Fischer • EaC ——《编译器设计》 Keith D. Cooper
编译器的各个阶段 活性分析 抽象语 源代码词法分析 Tken)语法分析 法树语义分析 中间代·寄存器分 目标代 配 码 代码生成
编译器的各个阶段 源代码 词法分析 语法分析 词素 (Token) 流 语义分析 抽象语 法树 (AST) • 活性分析 • 寄存器分 配 • 代码生成 中间代 码 目标代 码
C语言的精神 信任程序员 Trust the programmer 不要阻止程序员去做需要的事 Do not prevent the programmer from doing what needs to be done 保持语言的小巧和简单 Keep the language small and simple 为效率可以牺牲可移植性 Make it fast even if it is not guaranteed to be portable
C语言的精神 • 信任程序员 • Trust the programmer • 不要阻止程序员去做需要的事 • Do not prevent the programmer from doing what needs to be done • 保持语言的小巧和简单 • Keep the language small and simple • 为效率可以牺牲可移植性 • Make it fast, even if it is not guaranteed to be portable
只要能让程序员干的活 编译器一律不管 C语言的精神(里番)
只要能让程序员干的活 编译器一律不管 C语言的精神(里番)
为什么这么设计 640K is enough for everyone One-pass compiler ·先申明再使用=不能向后看 信任程序员=优化神马的做不 到呀
为什么这么设计 • 640K is enough for everyone • One-pass compiler • 先申明再使用 = 不能向后看 • 信任程序员 = 优化神马的做不 到呀
现代语言的一些特性 垃圾收集 面向对象 隐式指针 原生 String 一种语言包打天下的时代已经过去了
现代语言的一些特性 • 垃圾收集 • 面向对象 • 隐式指针 • 原生String • 一种语言包打天下的时代已经过去了
Bonus:假设所有的编译器都坏了 而且所有的源代码都不见了,但电 脑都能工作,我 重建C++编译器 们需要多少时间 (这个问题轮子哥在知乎上的回答是错误的
Bonus:假设所有的编译器都坏了, 而且所有的源代码都不见了,但电 脑都能工作,我们需要多少时间来 重建C++编译器? (这个问题轮子哥在知乎上的回答是错误的)
造轮子的时侯能不能用轮
造轮子的时候能不能用轮 子?