inflearn logo

Tạo ngôn ngữ lập trình của riêng bạn

Khóa học này được thực hiện dành cho những người muốn tạo ra ngôn ngữ lập trình của riêng mình.

19 học viên đang tham gia khóa học này

Độ khó Cơ bản

Thời gian Không giới hạn

Rust
Rust
Rust
Rust

Bạn sẽ nhận được điều này sau khi học.

  • Trình biên dịch

  • Thiết kế ngôn ngữ

  • Triển khai Lexer

  • Phát triển trình phân tích cú pháp

  • Tạo AST

  • Xây dựng trình biên dịch

  • Tạo mã LLVM IR

  • Tạo ngôn ngữ lập trình

  • Cơ sở lập trình hệ thống

  • Phát triển trình tạo mã nguồn

  • Dự án thực hành Rust


Ngôn ngữ của riêng mình, liệu có thể tự tay tạo ra cho đến khi thực thi được không?

Một ngôn ngữ không thể hoàn thiện chỉ bằng việc xác định cú pháp.
Chỉ khi bạn trực tiếp triển khai luồng xử lý từ việc chia các mã thông báo (token), thông qua bộ phân tích cú pháp (parser) và cây cú pháp trừu tượng (AST), cho đến khi thực thi bằng trình biên dịch, thì mã nguồn mới thực sự trở thành một ngôn ngữ..


Đầu tiên, chúng ta sẽ theo dõi quá trình Lexer chia mã nguồn thành các token. Bạn sẽ được tận mắt chứng kiến cách các con số, toán tử, biến và câu lệnh xuất dữ liệu được phân tách như thế nào.

Tiếp theo, bạn sẽ xây dựng cấu trúc của mã nguồn bằng cách tạo trình phân tích cú pháp (parser) và cây cú pháp trừu tượng (AST). Chúng ta sẽ triển khai một ngôn ngữ đơn giản bằng Rust, đồng thời kết nối với trình biên dịch và chức năng xuất kết quả.

Cuối cùng, bạn sẽ tự mình quyết định đối tượng người dùng mục tiêu, cú pháp, hệ thống kiểu dữ liệu và phương thức xử lý lỗi. Không chỉ dừng lại ở việc sử dụng ngôn ngữ do người khác tạo ra, bạn sẽ hiện thực hóa thiết kế của riêng mình vào mã nguồn.

Đừng lo lắng nếu cấu trúc của trình biên dịch và trình phân tích cú pháp còn xa lạ với bạn.
Trải nghiệm bắt đầu từ một token nhỏ để hoàn thiện một ngôn ngữ có thể tự thực thi sẽ là thử thách tiếp theo của bạn. will be your next challenge.


Từ lexer·parser đến token và cây cú pháp trừu tượng,
trực tiếp triển khai trình biên dịch bằng Rust.

Biến những ý tưởng mơ hồ thành cú pháp có thể thực thi,
trở thành nhà phát triển tạo ra ngôn ngữ của riêng mình.




Sau khi kết thúc khóa học này, bạn sẽ


Có thể thiết kế toàn bộ luồng của một ngôn ngữ lập trình trong nháy mắt.

  • Bạn sẽ hiểu được quá trình mã nguồn được chia thành các token trong Lexer, đi qua Parser để tạo thành cây cú pháp trừu tượng (AST), sau đó được chuyển đổi thành mã thực thi bằng cách kết nối từng bước một. Khi gặp cấu trúc của một ngôn ngữ mới, bạn có thể tự mình giải thích vai trò của từng thành phần và hệ thống lại dưới dạng sơ đồ cấu trúc ngôn ngữ.






✔️

Tự tay thiết kế quá trình một dòng mã được sinh ra dưới dạng ngôn ngữ

Biến ý tưởng thành cú pháp và
hoàn thiện thành một ngôn ngữ có thể thực thi

Hiểu rõ sự kết nối của toàn bộ quy trình, từ vai trò của Lexer và Parser cho đến sự khác biệt giữa Cây cú pháp trừu tượng (AST), Trình thông dịch (Interpreter) và Trình biên dịch (Compiler). Bằng cách sử dụng Rust để triển khai các cấu trúc định nghĩa token, phân tích cú pháp, xử lý biến và toán tử, bạn sẽ biến quá trình tạo ra một ngôn ngữ lập trình vốn mơ hồ trở thành những bước thực hiện cụ thể.

Từ phân tách mã thông báo đến triển khai lệnh xuất

Chia mã xuất chuỗi thành các mã thông báo (token), cấu thành cây cú pháp trừu tượng (AST) từ các con số và toán tử, sau đó làm cho chúng thực thi được trong trình biên dịch. Bạn sẽ tự mình quyết định phong cách ngữ pháp, hệ thống kiểu dữ liệu và phương thức xử lý lỗi để viết nên mã ngôn ngữ đơn giản của riêng mình.

Mã thực hành Rust và tài liệu thiết kế ngôn ngữ

Bạn có thể tiếp tục thực hành dựa trên các mã nguồn triển khai định nghĩa token, bộ phân tích từ vựng (lexer), bộ phân tích cú pháp (parser), cây cú pháp trừu tượng (AST) và trình biên dịch được đề cập trong bài giảng. Thông qua nhiệm vụ hệ thống lại đối tượng, triết lý, cú pháp và hướng gỡ lỗi của ngôn ngữ, bạn cũng sẽ thiết lập được các tiêu chuẩn thiết kế để mở rộng tính năng sau này.


📚

Hãy tự mình hoàn thiện ngôn ngữ của riêng bạn, từ Lexer đến tạo mã bằng Rust

Phần 1

Khái niệm và động lực tạo ra ngôn ngữ lập trình

Tìm hiểu định nghĩa và các thành phần cấu tạo của ngôn ngữ lập trình, đồng thời hiểu được lý do cũng như định hướng học tập để tự thiết kế và hiện thực hóa một ngôn ngữ.


Phần 2

Cấu trúc tổng thể của việc thực thi ngôn ngữ

Tìm hiểu vai trò của Lexer, Parser, cây cú pháp trừu tượng (AST) và so sánh sự khác biệt giữa trình thông dịch (Interpreter) và trình biên dịch (Compiler). Nắm bắt từng bước toàn bộ luồng xử lý chuyển đổi mã nguồn thành tệp thực thi hoặc kết quả thực thi.


Phần 3

Triển khai một ngôn ngữ đơn giản bằng Rust

Sau khi thiết lập môi trường phát triển Rust, chúng ta sẽ triển khai định nghĩa token, trình phân tích từ vựng (lexer), trình phân tích cú pháp (parser) để xử lý số, toán tử, biến và cây cú pháp trừu tượng (AST). Sau đó, hoàn thiện trình biên dịch và chức năng xuất kết quả để thực hành quy trình thực thi của một ngôn ngữ lập trình đơn giản.


Phần 4

Triết lý ngôn ngữ và quyết định thiết kế

Dựa trên đối tượng người dùng mục tiêu và triết lý của ngôn ngữ, chúng ta sẽ thiết kế phong cách cú pháp, việc có áp dụng hệ thống kiểu dữ liệu hay không, cũng như phương thức xử lý lỗi và gỡ lỗi. Đồng thời, tổng hợp các lựa chọn thiết kế chính để phác thảo một đặc tả ngôn ngữ nhất quán.


Phần 5

Thực hành tạo ngôn ngữ lập trình đơn giản

Dựa trên các nguyên tắc thiết kế và triển khai ngôn ngữ đã học trước đó, bạn sẽ viết mã cho ngôn ngữ đơn giản của riêng mình. Bạn sẽ được trải nghiệm quá trình chế tạo thông qua việc trực tiếp định nghĩa cú pháp và các hoạt động cốt lõi của ngôn ngữ.


Phần 6

Ý nghĩa của việc tạo ra ngôn ngữ của riêng mình

Nhìn lại động lực và ý nghĩa của việc tự tạo ra một ngôn ngữ lập trình cho riêng mình. Suy nghĩ về tầm ảnh hưởng của việc thiết kế ngôn ngữ đối với tư duy và cách giải quyết vấn đề.


Có thể giải quyết nỗi lo
của những người như thế này!

📌

Nhà phát triển trẻ đã hoàn thành nhập môn lập trình

Những người đã từng tạo ra các chương trình nhỏ xử lý con số và toán tử, nhưng vẫn còn xa lạ với quá trình mã nguồn đi qua các token và cây cú pháp để thực thi
Những người muốn tự tay triển khai Lexer, Parser, cây cú pháp trừu tượng (AST) bằng cú pháp Rust cơ bản để nắm vững toàn bộ luồng hoạt động của trình biên dịch.

📌

Nhà phát triển hệ thống dựa trên Rust

Những người đã từng làm việc với bộ nhớ và cấu trúc dữ liệu bằng ngôn ngữ Rust và C, nhưng còn thiếu các dự án chuyển đổi cú pháp tự tạo thành mã có thể thực thi
Những người muốn mở rộng năng lực lập trình hệ thống bằng cách thiết kế một ngôn ngữ đơn giản xử lý biến, toán tử, câu lệnh xuất dữ liệu và hiện thực hóa quá trình trình biên dịch cũng như tạo mã.

📌

Người có nguyện vọng nghiên cứu và phát triển ngôn ngữ lập trình

Những người đã học về cấu trúc trình phân tích cú pháp (parser) và trình biên dịch (compiler) nhưng còn thiếu kinh nghiệm trong việc tự thiết kế cú pháp, hệ thống kiểu dữ liệu và phương thức xử lý lỗi theo tiêu chuẩn của riêng mình
Những người muốn cụ thể hóa cú pháp sau khi đã xác định đối tượng người dùng và triết lý của ngôn ngữ, đồng thời muốn tạo điểm khởi đầu cho dự án chế tạo ngôn ngữ bằng cách tự viết mã cho một ngôn ngữ đơn giản của riêng mình




Lưu ý trước khi khóa học bắt đầu


Môi trường thực hành

  • Hỗ trợ Windows, macOS và Linux.
    Cài đặt và sử dụng các công cụ phát triển Rust.

  • Cần có trình chỉnh sửa văn bản và thiết bị đầu cuối.
    Khuyến nghị bộ nhớ từ 8GB trở lên.

Kiến thức tiên quyết và lưu ý

  • Cần có kiến thức cơ bản về ngôn ngữ Rust hoặc C.
    Bạn cần phải biết về biến, hàm và kiểu dữ liệu.

  • Nội dung bao gồm bộ phân tích từ pháp (lexer), bộ phân tích cú pháp (parser) và cây cú pháp trừu tượng (AST).
    Sẽ rất thuận lợi cho việc thực hành nếu bạn đã có kinh nghiệm viết mã.

Tài liệu học tập

  • Cung cấp slide bài giảng dưới dạng PDF.
    Ôn tập lại thiết kế ngữ pháp và cấu trúc trình biên dịch.

  • Sử dụng tài liệu thực hành về token, bộ phân tích cú pháp (parser) và trình biên dịch.
    Theo dõi toàn bộ quá trình tạo ra một ngôn ngữ đơn giản.


Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Người muốn tạo ra ngôn ngữ lập trình

  • Những người đã nắm vững kiến thức cơ bản về Rust và C nhưng đang cần những thử thách mới.

  • Người quan tâm đến cấu trúc của parser, lexer và trình biên dịch (compiler)

Cần biết trước khi bắt đầu?

  • Rust

  • Kinh nghiệm lập trình ở mức độ cơ bản

Xin chào
Đây là lunastev

Xác minh sự nghiệp

Nhà phát triển ngôn ngữ lập trình Wave

Wave GitHub 

GitHub

Chương trình giảng dạy

Tất cả

22 bài giảng

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Chưa có đủ đánh giá.
Hãy trở thành tác giả của một đánh giá giúp mọi người!

Khóa học khác của lunastev

Hãy khám phá các khóa học khác của giảng viên!

Giảm 25% cho thành viên mới

3.083.046 ₫

25%

4.110.726 ₫