1. Trang chủ
  2. » Công Nghệ Thông Tin

Giới thiệu môn học chương trình dịch

30 497 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 30
Dung lượng 634 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin

Trang 1

Nguyễn Phương Thái

Bộ môn Khoa học Máy tính

http://www.coltech.vnu.vn/~thainp/

Trang 2

Thông tin môn học

Giảng viên

Nguyễn Phương Thái

Trang nhà: http://www.coltech.vnu.vn/~thainp/

Trợ giảng:

Lê Minh Khôi (Bộ môn Khoa học Máy tính)

Nguyễn Duy Khương (Phòng thí nghiệm Tương tác Người-Máy)

Môn học tiên quyết: lập trình (C/C++, Java), toán rời rạc, cấu trúc dữ liệu và giải thuật

Trang 3

Thông tin môn học

[1] Bài giảng Lý thuyết và Thực hành Chương Trình

Dịch Lê Anh Cường, Khoa Công nghệ, ĐHQG Hà Nội, 2004

[2] Giáo trình lý thuyết, thực hành môn học Chương

trình dịch Phạm Hồng Nguyên, Khoa Công nghệ, ĐHQG Hà Nội, 1998

[3] Ngôn ngữ hình thức Nguyễn Văn Ba, ĐHBK Hà

Nội, 1994 [4] Thực hành kỹ thuật biên dịch Nguyễn Văn Ba,

ĐHBK Hà Nội, 1993 [5] Compiler: principles techniques and tools A.V

Aho, Ravi Sethi, D Ulman, 1986

Trang 4

Thông tin môn học

http://www.cse.unsw.edu.au/~cs3131/

K51CD):

http://www.coltech.vnu.vn/courses/

Trang 5

Chương trình dịch là gì?

Nhận dạng chương trình hợp lệ (hay không)

Sinh đúng (và hiệu quả) mã

Chương trình dịch Mã đích

Mã nguồn

Lỗi

Trang 6

Các loại chương trình dịch

 Trình biên dịch

→ Có nhiệm vụ dịch một chương trình từ ngôn

ngữ này sang ngôn ngữ khác (chương trình

thực thi được)

→ Chương trình nên được cải tiến bằng cách này hay cách khác

 Trình thông dịch

→ Đọc một chương trình và sinh ra kết quả thực thi chương trình đó

Trang 7

 “Ngôn ngữ tự nhiên” của máy tính

 Được định nghĩa bằng cách thiết kế phần cứng

 Phụ thuộc máy

 Nói chung bao gồm các xâu của các số nhị phân

 Ra lệnh cho máy tính thực hiện các phép toán cơ sở

 Mỗi lần một lệnh

 Khó hiểu với con người

 Ví dụ:

+1300042774 +1400593419 +1200274027

Trang 8

Ngôn ngữ máy, hợp ngữ, và ngôn ngữ bậc cao

 Sử dụng các từ viết tắt tiếng Anh để biểu diễn lệnh

 Dễ hiểu hơn với con người

 Nhưng lại không phải là “ngôn ngữ tự nhiên” của máy tính

 Cần các trình biên dịch: hợp ngữ  ngôn ngữ máy

 Ví dụ:

LOAD BASEPAY ADD OVERPAY STORE GROSSPAY

Trang 9

 Ví dụ:

grossPay = basePay + overTimePay

Trang 10

Các nhiệm vụ của sinh viên

Học các kỹ thuật, thuật toán, và công cụ của chương trình dịch

Học cách sử dụng chương trình dịch (và

chương trình gỡ rối) hiệu quả hơn

Hiểu hơn về hành vi của chương trình

Học cách xây dựng một hệ thống lớn và đáng tin cậy

Trang 11

Tri thức sinh viên cần đạt được

 Ôtômát hữu hạn trạng thái và quan hệ với biểu thức chính qui

 Văn phạm phi ngữ cảnh và quan hệ với

phân tích cú pháp phi ngữ cảnh

 Các chiến lược đặc tả ngôn ngữ hình thức

 Phân tích từ dưới lên và từ trên xuống

 Văn phạm thuộc tính

 Kiểm tra kiểu

 Máy ảo Java

Trang 12

Kỹ năng sinh viên cần đạt được

Có thể tự xây dựng các hệ phân tích từ tố,

phân tích cú pháp, phân tích ngữ nghĩa và

Trang 13

Kiến trúc của một chương trình dịch

Phân tích từ tố (từ vựng)

Phân tích ngữ nghĩa Phân tích cú pháp

Sinh mã trung gian

Tối ưu mã

Sinh mã đích

Mã nguồn

Mã đích

Trang 14

identifier position (tên)

assignment operator = (toán tử gán)

identifier initial (tên)

plus sign (dấu trừ)

multiplication sign (dấu nhân)

interger constant 60 (hằng số nguyên)

Xâu ký tự tạo thành từ tố gọi là từ vị

Trang 15

Sinh ra các thông báo lỗi đúng

Cố gắng phát hiện và khôi phục lỗi

Cú pháp của một ngôn ngữ lập trình thường được mô tả bằng một văn phạm phi ngữ cảnh (context-free grammar – CFG)

Trang 16

Ví dụ về văn phạm phi ngữ cảnh

Trang 17

09/03/24 17

Trang 18

Phân tích ngữ nghĩa

 Nhiệm vụ của hệ phân tích ngữ nghĩa

Phát hiện lỗi ngữ nghĩa của chương trình,

chẳng hạn:

 Các biến có được khai báo trước khi sử dụng hay

không?

 Các toán hạng có tương thích về kiểu hay không?

 Các thủ tục có được gọi với đúng số lượng và kiểu

tham số hay không?

 Một công việc quan trọng: kiểm tra kiểu

 Bảng ký hiệu (symbol table) sẽ được sử dụng

Trang 19

Sinh mã trung gian

Hệ sinh mã trung gian sinh ra một biểu diễn trung gian (intermediate representation – IR)

 Cây cú pháp trừu tượng (ASTs)

 Đồ thị định hướng không có chu trình (DAGs)

 Chú giải hậu tố

 Mã ba địa chỉ (3AC or quadruples)

Trang 20

Tối ưu mã

Nhiệm vụ của hệ tối ưu mã

Các tối ưu phổ biến

tần suất ít hơn

được thực hiện

Trang 21

Sinh mã

Nhiệm vụ của hệ sinh mã

Sinh mã đích: mã máy có thể định vị lại được

Trang 23

Phát hiện, thông báo, và phục hồi lỗi

Phát hiện

 Lỗi từ vựng: “123 => xâu ký tự không được kết thúc

đúng

 Lỗi cú pháp: ví dụ quên đóng dấu ngoặc

 Lỗi ngữ nghĩa: sử dụng các toán hạng không tương

thích về kiểu đối với một phép toán nào đó

Thông báo chính xác nhất có thể vị trí xuất hiện lỗi

Sau khi phát hiện lỗi, chương trình cần có khả

năng hồi phục và tiếp tục, cho phép phát hiện các lỗi khác nữa (thuộc phần chương trình còn lại)

Trang 24

Đề cương môn học

1 Phân tích từ vựng

1 Biểu thức chính qui, NFA và DFA

2 Chương trình sinh bộ phân tích từ vựng (lex và JLex)

2 Văn phạm phi ngữ cảnh

3 Phân tích cú pháp

1 Cây cú pháp trừu tượng

2 Phân tích đệ qui từ trên xuống và LL(k)

3 Phân tích từ dưới lên và LR(k)

4 Các chương trình sinh bộ phân tích cú pháp (yacc, JavaCC, JavaCUP)

4 Phân tích ngữ nghĩa

1 Bảng ký hiệu

2 Định danh (i.e., binding)

3 Kiểm tra kiểu

Trang 25

Các bài tập

Trang 26

VC (a variant of C)

 Chú thích: // và /* */

 Kiểu:

 Cơ sở: void, int, float và boolean

 Mảng: int[], float[], boolean[]

 Biến: toàn cục và cục bộ

 Literals: integers, reals, boolean, strings

 Biểu thức: điều kiện, quan hệ, số học và lời gọi

 Câu lệnh: if, for, while, gán, break, continue, return

 Các hàm: với tham số được truyền bởi giá trị

 Sinh viên sẽ cần đọc kỹ tài liệu đặc tả VC để hiểu rõ

về ngôn ngữ này

Trang 27

Kế hoạch

Tổng thời gian: 15 tuần

10 tuần học lý thuyết

5 tuần cho bài tập

Trang 28

Cách học

Hoàn thành mỗi bài tập đúng hạn!

Hiểu các lý thuyết được giới thiệu trong các bài giảng và áp dụng chúng khi cài đặt các

Trang 29

Đánh giá

Qua bài tập

Qua kiểm tra cuối kỳ

Ngày đăng: 22/10/2014, 19:06

HÌNH ẢNH LIÊN QUAN

1. Bảng ký hiệu - Giới thiệu môn học chương trình dịch
1. Bảng ký hiệu (Trang 24)

TỪ KHÓA LIÊN QUAN

w