Ưu đãi trong tuần: Nhập mã UD50 giảm 50k cho đơn từ 300k!
Trang chủ
Menu

Compiler Design: Principles, Techniques and Tools

Thiết kế trình biên dịch: Nguyên lý, Kỹ thuật và Công cụ

Thiết kế trình biên dịch: Nguyên lý, Kỹ thuật và Công cụ

Nguyên lý thiết kế trình biên dịch

4.3
(245 đánh giá)
576 học viên
Giảng viên
Prof Madana Mohana R
Phụ đề Việt chất lượng cao Phụ đề tiếng Anh Bán chạy Đánh giá cao
79.000đ 399.000đ -80%
✓ Xem giỏ hàng và thanh toán
Bao gồm phụ đề tiếng Việt, tiếng Anh
34.5 giờ video
51 bài giảng
1 bài quiz
Truy cập vĩnh viễn
Học trên mọi thiết bị
Cập nhật: 07/06/2026

Bạn sẽ học được gì

Thể hiện khả năng thiết kế một trình biên dịch dựa trên một tập các đặc điểm ngôn ngữ.
Thể hiện kiến thức về mẫu, token và biểu thức chính quy cho phân tích từ vựng.
Nắm được kỹ năng sử dụng công cụ lex và yacc để phát triển bộ phân tích từ vựng và phân tích cú pháp.
Thiết kế và triển khai bộ phân tích LL và LR.
Thiết kế thuật toán tối ưu mã để cải thiện hiệu năng của chương trình về độ phức tạp không gian và thời gian.
Thiết kế thuật toán sinh mã máy.

Yêu cầu

Một khóa học về “Ngôn ngữ hình thức và Lý thuyết Automata”
Một khóa học về “Tổ chức và Kiến trúc máy tính”
Một khóa học về “Lập trình máy tính và Cấu trúc dữ liệu”

Đối tượng phù hợp

Dành cho sinh viên đại học ngành Khoa học máy tính & Công nghệ thông tin trong và ngoài nước Ấn Độ.
Dành cho sinh viên tốt nghiệp ngành Khoa học máy tính & Công nghệ thông tin tham dự kỳ thi Graduate Aptitude Test in Engineering (GATE) tại Ấn Độ, kỳ thi này chủ yếu kiểm tra hiểu biết toàn diện về các môn học đại cương trong kỹ thuật và khoa học để xét tuyển vào chương trình Thạc sĩ và cơ hội việc làm trong khu vực công…
Dành cho sinh viên sau đại học ngành Khoa học máy tính & Công nghệ thông tin tham dự kỳ thi đầu vào Tiến sĩ tại Ấn Độ.
Dành cho sinh viên sau đại học ngành Khoa học máy tính & Công nghệ thông tin tham dự kỳ thi UGC NET hoặc NTA-UGC-NET tại Ấn Độ.

Nội dung khóa học

11 phần • 51 bài giảng
1 Giới thiệu về trình biên dịch
2 Cấu trúc của trình biên dịch: Các pha của trình biên dịch
3 Khoa học xây dựng trình biên dịch
4 Cơ bản về ngôn ngữ lập trình
1 Vai trò của bộ phân tích từ vựng
2 Đệm đầu vào và Đặc tả Token
3 Nhận dạng Token
4 Trình sinh bộ phân tích từ vựng: Công cụ Lex
5 Automata hữu hạn (FA)
6 Từ biểu thức chính quy đến Automata
7 Thiết kế trình sinh bộ phân tích từ vựng
8 Tối ưu hóa ánh xạ mẫu dựa trên DFA
1 Giới thiệu về phân tích cú pháp hay Bộ phân tích cú pháp
2 Văn phạm phi ngữ cảnh (CFG)
3 Viết văn phạm
1 Bộ phân tích đệ quy xuống
2 Bộ phân tích dự đoán – Mô hình, Hoạt động và Trình tự các bước
3 Bộ phân tích dự đoán – Tính toán giá trị FIRST & FOLLOW
4 Bộ phân tích dự đoán – Xây dựng bảng phân tích dự đoán & Văn phạm LL(1)
1 Giới thiệu về phân tích từ dưới lên | Bộ phân tích Shift-Reduce (SR)
2 Giới thiệu về phân tích LR và mục LR(0)
3 Phân tích LR – Mô hình, Hoạt động, Thuật toán và Các bước của bộ phân tích LR
4 Bộ phân tích LR đơn giản (SLR)
5 Bộ phân tích LR chuẩn tắc (CLR) và mục LR(1)
6 Xây dựng bảng phân tích CLR
7 Xây dựng bảng phân tích LALR
8 Bộ phân tích LR với văn phạm nhập nhằng | Khôi phục lỗi trong phân tích LR
9 Trình sinh bộ phân tích – YACC (Yet Another Compiler-Compiler)
1 Định nghĩa hướng cú pháp (SDD) | Thuộc tính kế thừa và tổng hợp
2 Thứ tự đánh giá cho SDD
3 Ứng dụng của dịch hướng cú pháp (SDT)
4 Lược đồ dịch hướng cú pháp (SDT)
5 Triển khai SDD có thuộc tính L
1 Các biến thể của cây cú pháp
2 Mã ba địa chỉ
3 Kiểu dữ liệu và khai báo
4 Kiểm tra kiểu
5 Luồng điều khiển | Câu lệnh Switch | Mã trung gian cho thủ tục
1 Tổ chức bộ nhớ
2 Cấp phát không gian trên ngăn xếp
3 Truy cập dữ liệu không cục bộ trên ngăn xếp
4 Quản lý Heap
5 Giới thiệu về thu gom rác & Giới thiệu về thu gom dựa trên vết
1 Các vấn đề trong thiết kế bộ sinh mã
2 Khối cơ bản và đồ thị luồng & Tối ưu hóa khối cơ bản
3 Bộ sinh mã đơn giản & Tối ưu hóa qua khe
4 Phân bổ và gán thanh ghi | Sinh mã bằng lập trình động
1 Các nguồn tối ưu hóa chính
2 Vòng lặp trong đồ thị luồng | Lan truyền hằng số | Loại bỏ dư thừa một phần
3 Giới thiệu về phân tích luồng dữ liệu
4 Giải phương trình luồng dữ liệu

Giới thiệu khóa học

Course Objectives:

  1. Introduce the major concepts of language translation and compiler design and impart the knowledge of practical skills necessary for constructing a compiler.

  2. Topics include phases of compiler, parsing, syntax directed translation, type checking use of symbol tables, code optimization techniques, intermediate code generation, code generation and data flow analysis.

Course Outcomes:

  1. Demonstrate the ability to design a compiler given a set of language features.

  2. Demonstrate the the knowledge of patterns, tokens & regular expressions for lexical analysis.

  3. Acquire skills in using lex tool & yacc tool for developing a scanner and parser.

  4. Design and implement LL and LR parsers

  5. Design algorithms to do code optimization in order to improve the performance of a program in terms of space and time complexity.

  6. Design algorithms to generate machine code.

SYLLABUS:

Module- I:

Introduction: The structure of a compiler, the science of building a compiler, programming language basics.

Lexical Analysis: The Role of the Lexical Analyzer, Input Buffering, Recognition of Tokens, The Lexical-Analyzer Generator Lex, Finite Automata, From Regular Expressions to Automata, Design of a Lexical-Analyzer Generator, Optimization of DFA-Based Pattern Matchers.

Module- II:

Syntax Analysis: Introduction, Context-Free Grammars, Writing a Grammar.

Top-Down Parsing, Bottom-Up Parsing.

Introduction to LR Parsing: Simple LR, More Powerful LR Parsers, Using Ambiguous Grammars and Parser Generators.

Module- III:

Syntax-Directed Translation: Syntax-Directed Definitions, Evaluation Orders for SDD's, Applications of Syntax-Directed Translation, Syntax-Directed Translation Schemes, Implementing L-Attributed SDD's.

Intermediate-Code Generation: Variants of Syntax Trees, Three-Address Code, Types and Declarations, Type Checking, Control Flow, Switch-Statements, Intermediate Code for Procedures.

Module- IV: 

Run-Time Environments: Stack Allocation of Space, Access to Non-local Data on the Stack, Heap Management, Introduction to Garbage Collection, Introduction to Trace-Based Collection.

Code Generation: Issues in the Design of a Code Generator, The Target Language, Addresses in the Target Code, Basic Blocks and Flow Graphs, Optimization of Basic Blocks, A Simple Code Generator, Peephole Optimization, Register Allocation and Assignment, Dynamic Programming Code-Generation.

Module- V: 

Machine-Independent Optimization: The Principal Sources of Optimization, Introduction to Data-Flow Analysis, Foundations of Data-Flow Analysis, Constant Propagation, Partial-Redundancy Elimination, Loops in Flow Graphs.


Reference:

  1. Compilers: Principles, Techniques and Tools, Second Edition, Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffry D. Ullman.


Khóa học liên quan

Khám phá thêm các khoá học cùng chủ đề

Hiển thị tất cả khoá học C Language
Hiển thị tất cả khoá học Compiler Design
Hiển thị tất cả khoá học Programming Languages
Hiển thị tất cả khoá học Theory Of Computation
Zalo
Tôi có thể tư vấn khoá học cho bạn 😊