参考书籍 《自制编译器》——青木峰郎 ·虎书——《现代编译程序实现》 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
为什么这么设计 640K is enough for everyone One-pass compiler ·先申明再使用=不能向后看 信任程序员=优化神马的做不 到呀
为什么这么设计 • 640K is enough for everyone • One-pass compiler • 先申明再使用 = 不能向后看 • 信任程序员 = 优化神马的做不 到呀
现代语言的一些特性 垃圾收集 面向对象 隐式指针 原生 String 一种语言包打天下的时代已经过去了
现代语言的一些特性 • 垃圾收集 • 面向对象 • 隐式指针 • 原生String • 一种语言包打天下的时代已经过去了