21/1/2010
Môn học sẽ nghiên cứu
ự
ợ
ệ
ệ
(cid:132) Cách thức làm việc của máy tính (tập
XÂY DỰNG CHƯƠNG TRÌNH DỊCH CHƯƠNG TRÌNH DỊCH
lệnh, thanh ghi, mode địa chỉ, các cấu trúc dữ liệu được sử dụng khi thực hiện. . . ) ) ụ g (cid:132) Cách thức làm việc của bộ xử lý ngôn ngữ
và chương trình dịch
ngữ cụ thể
(cid:132) Sinh mã máy cho những cấu trúc ngôn Nguyễn Thị Thu Hương - Khoa CNTT – ĐHBKHN Tel (04) 38696121 - Mobi : 0903253796 Email :huongnt@it-hut.edu.vn,huongnt-fit@mail.hut.edu.vn
(cid:132) Thế nào là một thiết kế ngôn ngữ tốt?
Tại sao cần nghiên cứu CT dịch?
Những vấn đề chính
lớn
ồ
(cid:132) Rèn kỹ năng phát triển ứng dụng quy mô
Bước chuẩn bị cho những dự án lớn trong tương lai.
(cid:132) Bộ xử lý ngôn ngữ (cid:132) Cấu trúc của một trình biên dịch (1 pha) (cid:132) Văn phạm sản sinh (cid:132) BNF và sơ đồ cú pháp (cid:132) Phân tích từ vựng và bảng ký hiệu (cid:132) Phân tích cú pháp trên xuống có quay lui (cid:132) Phân tích cú pháp tiền định (cid:132) Văn phạm LL(k)
1
(cid:132) Làm việc với các cấu trúc dữ liệu phức tạp (cid:132) Làm việc với các cấu trúc dữ liệu phức tạp (cid:132) Tìm hiểu sự tương tác giữa các giải thuật
21/1/2010
Những vấn đề chính
Tài liệu tham khảo (cid:132) Aho.A.V, Sethi.R., Ullman.J.D.
Compiler : Principles, Techniques and Tools. Addison Wesley.1986
(cid:132) Bal.H. E.
Modern Compiler Design. John Wiley & Sons Inc (2000) John Wiley & Sons Inc (2000)
(cid:132) William Allan Wulf.
The Design of an Optimizing Compiler Elsevier Science Ltd (1980)
(cid:132) Charles N. Fischer. Crafting a Compiler Benjamin-Cummings Pub Co (1987)
(cid:132) Phân tích đệ quy trên dưới (cid:132) Phân tích cú pháp cho ngôn ngữ KPL Phân tích ngữ nghĩa (cid:132) Phân tích ngữ nghĩa (cid:132) Stack calculator (cid:132) Sinh mã trung gian (cid:132) Sinh mã đích (cid:132) Tối ưu mã
Tài liệu tham khảo
(cid:132) Niklaus Wirth
Compiler Construction. Addison Westley. 1996
(cid:132) Andrew.W.Appel
Modern Compiler Implementation in Java Princeton University.1998 it 1998 P i
t U i
Bài 1. Bộ xử lý ngôn ngữ Bộ xử lý ngôn ngữ
(cid:132) Nguyễn Văn Ba
Giáo trình kỹ thuật biên dịch Đại học Bách Khoa Hà Nội.1994
(cid:132) Vũ Lục
Phân tích cú pháp Đại học Bách Khoa Hà Nội.1990
(cid:132) Bài giảng về ngôn ngữ và phương pháp dịch (cid:132) www.sourceforge.net
2
21/1/2010
Ngôn ngữ lập trình thế hệ thứ nhất và thứ hai
Ngôn ngữ lập trình cấp cao
thế hệ.
(cid:132) Các ngôn ngữ lập trình được chia thành 5
Ngôn ngữ lập trình thế hệ thứ ba
(cid:132) Thế hệ thứ nhất : ngôn ngữ máy (cid:132) Thế hệ thứ hai : Assembly (cid:132) Thế hệ thứ hai : Assembly (cid:132) Các ngôn ngữ thuộc thế hệ thứ nhất và thứ hai là ngôn ngữ lập trình cấp thấp (cid:132) Việc phân chia cấp cao hay thấp phụ (cid:132) Việc phân chia cấp cao hay thấp phụ thuộc mức độ trừu tượng của ngôn ngữ Cấp thấp : gần với máy Cấp cao : gần với ngôn ngữ tự nhiên
Ngôn ngữ lập trình thế hệ thứ tư
(cid:132) Thường được sử dụng trong một lĩnh vực
p
g p
hạn biến hạn biến
(cid:132) Dễ hiểu hơn (cid:132) Cho phép thực hiện các khai báo, chẳng
cụ thể (chẳng hạn thương mại) (cid:132) Dễ lập trình,xây dựng phần mềm y (cid:132) Có thể kèm công cụ tạo form, báo cáo (cid:132) Ví dụ :SQL, Visual Basic, Oracle (SQL
cấu trúc
plus, Oracle Form, Oracle Report). . . .
(cid:132) Phần lớn các ngôn ngữ cho phép lập trình
3
(cid:132) Ví dụ: Fortran, Cobol, C, C++, Basic . . . .
21/1/2010
Ngôn ngữ lập trình thế hệ thứ năm
Đặc trưng của ngôn ngữ lập trình cấp cao
hiện
sang ngôn ngữ máy
(cid:132) Giải quyết bài toán dựa trên các ràng buộc đưa ra cho chương trình chứ không phải giải thuật của người lập trình. ế (cid:132) Việc giải quyết bài toán do máy tính thực (cid:132) Độc lập với máy tính (cid:132) Gần với ngôn ngữ tự nhiên Chương trình dễ đọc, viết và bảo trì (cid:132) Chương trình dễ đọc, viết và bảo trì (cid:132) Muốn thực hiện chương trình phải dịch
Cú pháp và ngữ nghĩa của ngôn ngữ lập trình
Bộ xử lý ngôn ngữ (Language Processor)
(cid:132) Chương trình thực hiện chậm hơn (cid:132) Phần lớn các ngôn ngữ dùng để lập trình logic, giải quyết các bài toán trong lĩnh vực trí tuệ nhân tạo
(cid:132) Cú pháp : Chính tả và văn phạm của
(cid:132) Phần mềm dịch từ một ngôn ngữ nào đó sang mã máy (có thể đồng thời thực thi)
các cấu trúc ngôn ngữ các cấu trúc ngôn ngữ
(cid:132) Ngữ nghĩa : Ý nghĩa và hiệu quả của
các cấu trúc ngôn ngữ
(cid:133)Compiler (cid:133)Assembler (cid:133)Interpreter (cid:133)Compiler - Compiler
4
(cid:132) Ví dụ (cid:132) Ví dụ
21/1/2010
Compiler (trình biên dịch)
Compiler & Interpreter (cid:132) Compiler : Dịch trực tiếp ra mã máy
p ( g
p
)
(cid:132) Interpreter : Trực tiếp thực hiện từng lệnh mã nguồn
g (cid:132) Bản thân compiler được viết trên một ngôn ngữ gọi là ngôn ngữ thực hiện
(cid:132) Biến thể của Interpreter : thông dịch mã trung gian
(cid:132) Mục đích : Dịch chương trình từ ngôn ngữ cấp cao (ngôn ngữ nguồn) sang ngôn ngữ cấp thấp (ngôn ngữ đích). hiệ từ tiế th lệ h I t T ã ồ t
Compiler
Interpreter
5
21/1/2010
Các công cụ liên quan đến trình biên dịch
Vị trí của trình biên dịch trong bộ xử lý ngôn ngữ
6
(cid:132) Trình thông dịch (Interpreter) (cid:132) Assembler (cid:132) Linker (cid:132) Loader (cid:132) Loader (cid:132) Bộ tiền xử lý (Preprocessor) (cid:132) Editor (cid:132) Debugger (cid:132) Profiler