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