[COURSE] Add SJTU SE3355: Compiler Course (#727)

* Add SJTU Compiler Course

* Update Index

* Fix Indentation
This commit is contained in:
xeonliu 2025-06-08 00:23:04 +08:00 committed by GitHub
parent a74ddd98d3
commit 57eecf19f2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 63 additions and 0 deletions

View File

@ -0,0 +1,29 @@
# SJTU Compiler Principles
## Course Introduction
- Offered by: Shanghai Jiao Tong University
- Prerequisites: Basic Computer Systems, Data Structures and Algorithms, Programming Fundamentals
- Programming Language: C++
- Course Difficulty: 🌟🌟🌟🌟
- Class Hour: 150 hours
The Compiler Principles course at Shanghai Jiao Tong University aims to implement a compiler for the Tiger language. In this course, you will learn about lexical analysis, grammar analysis, semantic analysis, escape analysis, activation records (stack frames), LLVM IR, liveness analysis, register allocation, garbage collection, object-oriented programming, functional programming, and many other topics. Similar to the Compiler Principles course at Peking University, this course offers you a great deal of freedom. The test programs will only check the correctness of the assembly code you output and will not impose any restrictions on the specific design of your compiler. You will need to build your own compiler step by step from scratch.
In this course, you will learn how to use frameworks such as `flexc++`, `Bisonc++`, and `LLVM`, and enhance your debugging skills through practice. The theoretical part of the course is taught by teachers from the IPADS Laboratory at Shanghai Jiao Tong University.
## Course Resources
- Course Website: <https://ipads.se.sjtu.edu.cn/courses/compilers/index.shtml>
- Slides: See the course website
- Framework Code: See GitHub
- Course Textbook: "Tiger Book" (Modern Compiler Implementation in C)
- 2 Quizzes + 6 Labs
- Lab 1: Straight-line Program Interpreter
- Lab 2: Lexical Analysis
- Lab 3: Parsing
- Lab 4: Type Checking
- Lab 5
- Part 1: Escape Analysis and Translation
- Part 2: Tiger Compiler without Register Allocation
- Lab 6: Register Allocation

View File

@ -0,0 +1,33 @@
# SJTU 编译原理
## 课程简介
- 所属大学:上海交通大学
- 先修要求:计算机系统基础、数据结构与算法、编程基础
- 编程语言C++
- 课程难度:🌟🌟🌟🌟
- 预计学时150 小时
上海交通大学的编译原理课程旨在实现一个 Tiger 语言的编译器。在这门课上你可以学习到词法分析、文法分析、予以分析、逃逸分析、活动记录栈帧、LLVM IR、活跃分析、寄存器分配、垃圾收集、面向对象、函数式程序等众多话题。和北大的编译原理课程相似该课程给予了你极大的自由度测试程序只会对你输出的汇编代码的正确性进行测试而不会对你编译器的具体设计做任何限制。你需要从一个个空文件中一步步构建出属于你自己的编译器。
在这门课上你将学到`flexc++`、`Bisonc++`、`LLVM`等框架的使用方法,并在练习过程中加强自己的调试能力。
理论部分由上海交通大学 IPADS 实验室的老师讲述。
## 课程资源
- 课程网站:<https://ipads.se.sjtu.edu.cn/courses/compilers/index.shtml>
- 课件:参见课程网站
- 框架代码:参见 GitHub
- 课程教材虎书Modern Compiler Implementation in C
- 2 次Quiz + 6 个Lab
- Lab 1: Straight-line Program Interpreter
- Lab 2: Lexical Analysis
- Lab 3: Parsing
- Lab 4: Type Checking
- Lab 5
- Part 1: Escape Analysis and Translation
- Part 2: Tiger Compiler without register allocation
- Lab 6: Register Allocation

View File

@ -242,6 +242,7 @@ nav:
- "NJU 编译原理": "编译原理/NJU-Compilers.md"
- "KAIST CS420: Compiler Design": "编译原理/CS420.md"
- "USTC 编译原理与技术": "编译原理/USTC-Compilers.md"
- "SJTU 编译原理": "编译原理/SJTU-Compilers.md"
- 编程语言设计与分析:
- "Stanford CS242: Programming Languages": "编程语言设计与分析/CS242.md"
- "NJU 软件分析": "编程语言设计与分析/NJU-SoftwareAnalysis.md"