01/10/2018, 15:31
Thiết kế một trình biên dịch
Thiết kế một trình biên dịch cho phép dịch một đoạn chương trình viết bằng ngôn ngữ C sang mã máy”.
Đoạn chương trình gồm các phát biểu:
- Cấu trúc switch…case
- Phép gán.
- Các toán tử +, -, *, /, so sánh.
Các toán hạng gồm định danh, hằng số thực, hằng số nguyên, true, false, biểu thức.
A/C nào có thể quăng cho e tài liệu làm được cái đề này ko ạ. !!! code thì e code được chứ thiết kế trình biên dịch sao mông lung quá !!! không biết hướng làm luôn. chỉ e hướng làm thôi cũng được
cám ơn Mọi Người
Bài liên quan
Xem sách này nè
Compilers: Principles, Techniques and Tools
Compilers: Principles, Techniques and Tools, known to professors, students, and developers worldwide as the "Dragon Book," is available in a new edition. Every chapter has been completely revised to ...
2.0 out of 5 stars,
Đọc sách rồng thì hơi bị lâu đấy
YinYang's Programing Blog – 14 Mar 11
Nếu chỉ làm Interpreter thôi thì bạn nghiên cứu lexer và parser thôi là đủ rồi. (Trước giờ có bộ đôi kinh điển là flex và bison để tự sinh code trình dịch, nhưng 2 cái này dùng lập trình thủ tục khá khí chịu, bạn có thể tìm tool khác)
Tham khảo 3 bài cực hay:
A stack-based programming language: Cat
Ngôn ngữ lập trình stack-based (hay stack-oriented) là loại ngôn ngữ sử dụng stack để thực hiện các thao tác và tính toán. Một ví dụ cụ thể mà bạn có thể tìm thấy trong blog này là ngôn ngữ MSIL (C…
Viết trình thông dịch stack-based đơn giản bằng C#
Trong bài viết trước tôi có giới thiệu sơ lược về ngôn ngữ lập trình Cat. Đây là một ngôn ngữ lập trình stack-based và chỉ hỗ trợ thông dịch. Việc hiện thực ngôn ngữ này không quá phức tạp tuy nhiê…
C# – Chuyển chuỗi biểu thức thành Expression Tree
ExpressionTree trong .Net là kĩ thuật rất hiệu quả để tính giá trị các biểu thức toán học. Tuy nhiên như trong bài Cơ bản về Expression Tree (C#) bạn cũng thấy là API này không cho phép ta parse mộ…
LLVM is your friend.
LLVM: Implementing a Language · GitBook (Legacy)
llvm-implementing-a-language: Port of web tutorial at http://llvm.org/docs/tutorial/index.html