不要因为现实的平凡,就否定了那华丽的梦想!

5.2 斯坦福 CS 143 编译器

课程名称

Compilers

课程概要
《斯坦福CS 143编译器》是一门深入探讨编译器设计与实现的经典课程。通过学习这门课程,学生将掌握从源代码到目标代码的完整编译过程,包括词法分析、语法分析、语义分析、中间代码生成、优化以及代码生成等核心环节。课程不仅涵盖了有限自动机、正则表达式、上下文无关文法、递归下降解析、LL(1)解析、SLR解析等理论基础,还通过实践项目引导学生实现一个完整的编译器,深入理解编译器的工作原理和设计思想。此外,课程还涉及类型检查、运行时组织、数据流分析、寄存器分配、内存管理等高级主题,帮助学生全面掌握现代编译器的核心技术。CS 143的优势在于其理论与实践的高度结合,学生不仅能学到扎实的理论知识,还能通过动手实践积累宝贵的工程经验,为未来从事编程语言、编译器开发或系统优化等领域打下坚实基础。这门课程适合对编程语言、系统底层技术感兴趣的学生,是深入理解计算机系统运行机制的重要途径。
| 推荐系数 |

⭐⭐⭐

| 先修 |

3.10 斯坦福 CS 107 计算机组
成与系统

离散数学

微积分

线性代数

概率论与数理统计

语音字幕
中文
英文

课程大纲
1.导论-Introduction
2.编译器结构-Structure of a Compiler
3.编程语言的经济性-The Economy of Programming Languages
4.Cool语言概述-Cool Overview
5.Cool示例II-Cool Example II
6.Cool示例III-Cool Example III
7.词法分析-Lexical Analysis
8.词法分析实例-Lexical Analysis Examples
9.正则语言-Regular Languages
10.形式语言-Formal Languages
11.词法规范-Lexical Specifications
12.词法规范详解-Lexical Specification
13.有限自动机-Finite Automata
14.正则表达式转NFA-Regular Expressions into NFAs
15.NFA到DFA转换-NFA to DFA
16.有限自动机实现-Implementing Finite Automata
17.语法分析导论-Introduction to Parsing
18.上下文无关文法-Context Free Grammars
19.推导式-Derivations
20.二义性-Ambiguity
21.错误处理-Error Handling
22.抽象语法树-Abstract Syntax Trees
23.递归下降语法分析-Recursive Descent Parsing
24.递归下降算法-Recursive Descent Algorithm
25.递归下降的局限性-Recursive Descent Limitations
26.左递归-Left Recursion
27.预测分析法-Predictive Parsing
28.First集合-First Sets
29.Follow集合-Follow Sets
30.LL(1)语法分析表-LL1 Parsing Tables
31.自底向上语法分析-Bottom-Up Parsing
32.移进-归约分析-Shift-Reduce Parsing
33.句柄-Handles
34.句柄识别-Recognizing Handles
35.可行前缀识别-Recognizing Viable Prefixes
36.有效项目-Valid Items
37.SLR语法分析-SLR Parsing
38.SLR分析实例-SLR Parsing Example
39.SLR改进策略-SLR Improvements
40.SLR示例详解-SLR Examples
41.类型检查实现-Implementing Type Checking
42.语义分析导论-Introduction to Semantic Analysis
43.作用域-Scope
44.符号表-Symbol Tables
45.类型系统-Types
46.类型检查-Type Checking
47.类型环境-Type Environments
48.子类型化-Subtyping
49.方法类型化-Typing Methods
50.静态与动态类型-Static vs. Dynamic Typing
51.Self类型-Self Type
52.Self类型操作-Self Type Operations
53.Self类型使用-Self Type Usage
54.Self类型检查-Self Type Checking
55.错误恢复-Error Recovery
56.运行时组织-Runtime Organization
57.活动记录-Activations
58.活动记录结构-Activation Records
59.全局变量与堆管理-Globals and Heap
60.内存对齐-Alignment
61.栈机模型-Stack Machines
62.代码生成导论-Introduction to Code Generation
63.代码生成I-Code Generation I
64.代码生成II-Code Generation II
65.代码生成实例-Code Generation Example
66.临时变量管理-Temporaries
67.对象布局-Object Layout
68.语义学概述-Semantics Overview
69.操作语义-Operational Semantics
70.Cool语义I-Cool Semantics I
71.Cool语义II-Cool Semantics II
72.中间代码-Intermediate Code
73.优化概述-Optimization Overview
74.局部优化-Local Optimization
75.窥孔优化-Peephole Optimization
76.数据流分析-Dataflow Analysis
77.常量传播-Constant Propagation
78.循环分析-Analysis of Loops
79.偏序关系-Orderings
80.活性分析-Liveness Analysis
81.寄存器分配-Register Allocation
82.图着色算法-Graph Coloring
83.溢出处理-Spilling
84.缓存管理-Managing Caches
85.自动内存管理-Automatic Memory Management
86.标记-清除算法-Mark and Sweep
87.停止-复制算法-Stop and Copy
88.保守式收集-Conservative Collection
89.引用计数-Reference Counting
90.Java语言特性-Java
91.Java数组实现-Java Arrays
92.Java异常处理-Java Exceptions
93.Java接口机制-Java Interfaces
94.Java强制转换-Java Coercions
95.Java多线程-Java Threads
96.其他专题-Other Topics
97.DeduceIt工具演示-DeduceIt Demo 
学习指南