Chương trình dịch

Tài liệu tương tự
Chương trình dịch

BỘ GIÁO DỤC VÀ ĐÀO TẠO HỌC VIỆN TÀI CHÍNH BỘ TÀI CHÍNH NGUYỄN HOÀNG DŨNG HOÀN THIỆN TỔ CHỨC HỆ THỐNG THÔNG TIN KẾ TOÁN QUẢN TRỊ TRONG CÁC DOANH NGHIỆP

Chương trình dịch

NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Giảng viên: Đỗ Thị Thanh Tuyền

PowerPoint Template

Trường Đại học Dân lập Văn Lang - Nội san Khoa học & Đào tạo, số 5, 11/2005 NHÓM HỌC TẬP SÁNG TẠO THS. NGUYỄN HỮU TRÍ Trong bài viết này tôi muốn chia

CƠ QUAN CỦA ĐẢNG BỘ ĐẢNG CỘNG SẢN VIỆT NAM TỈNH LÂM ĐỒNG - TIẾNG NÓI CỦA ĐẢNG BỘ, CHÍNH QUYỀN, NHÂN DÂN LÂM ĐỒNG Tòa soạn: 38 QUANG TRUNG - ĐÀ LẠT Điệ

Chương trình dịch

TRƯỜNG ĐẠI HỌC KINH TẾ TP

QUY CHẾ CÔNG BỐ THÔNG TIN CÔNG TY CỔ PHẦN ĐẠI LÝ GNVT XẾP DỠ TÂN CẢNG (Ban hành kèm theo Quyết định số: 192A/QĐ-HĐQT ngày 23 tháng 3 năm 2016 của Chủ

PowerPoint Template

HƢỚNG DẪN BÀI TẬP NHÓM PHẦN THỰC HIỆN CÁ NHÂN Phần 1: Đề xuất dự án Phần 1 là nhiệm vụ cá nhân. Chỉ những sinh viên hoàn thành nhiệm vụ này mới được p

Quy tắc Ứng xử của chúng tôi Sống theo giá trị của chúng tôi

Microsoft Word - Ēiễm báo

000.Bia

Microsoft Word - Bai giang ve quan ly DADTXD doc

BỘ Y TẾ TRƯỜNG ĐẠI HỌC ĐIỀU DƯỠNG NAM ĐỊNH Số: 1893/QĐ-ĐDN CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập -Tự do- Hạnh phúc Nam Định, ngày 09 tháng 12 năm

Chiến lược kiểm thử Chiến lược kiểm thử Bởi: Khoa CNTT ĐHSP KT Hưng Yên Các công đoạn kiểm thử Quá trình kiểm thử có thể chia làm các giai đoạn : Kiểm

000.FF50VI. Trang bia 1 - bia ngoai

Nghiên cứu ứng dụng mạng nơtron nhân tạo hỗ trợ công tác chọn thầu thi công ở Việt Nam

BCTC Mẹ Q xlsx

HỌC VIỆN NÔNG NGHIỆP VIỆT NAM SỔ TAY SINH VIÊN (Dùng cho sinh viên khóa 63) Sinh viên : Mã sinh viên :..

ĐIỀU KHOẢN KHÁCH HÀNG CỦA HP - Portfolio Số Hợp đồng nếu cần: HP: Khách hàng: CÁC ĐIỀU KHOẢN KHÁCH HÀNG CỦA CÔNG TY HP 1. Các Bên. Các điều khoản này

a VĂN PHÒNG CHÍNH PHỦ CỤC KIỂM SOÁT THỦ TỤC HÀNH CHÍNH ĐIỂM BÁO Ngày 06 tháng 8 năm 2018

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN PHÒNG THANH TRA PHÁP CHẾ - SỞ HỮU TRÍ TUỆ BẢNG SO SÁNH NỘI DUNG LUẬT GIÁO DỤC ĐẠI HỌC NĂM 2012 VÀ LUẬT SỬA ĐỔI, BỔ SU

TCVN T I Ê U C H U Ẩ N Q U Ố C G I A TCVN :2014 ISO/IEC :2013 Xuất bản lần 1 KỸ THUẬT PHẦN MỀM VÀ HỆ THỐNG ĐẢM BẢO PHẦN MỀM VÀ HỆ THỐNG

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TCVN T I Ê U C H U Ẩ N Q U Ố C G I A TCVN :2013 ISO :2013 Xuất bản lần 1 BIỂU ĐỒ KIỂM SOÁT PHẦN 2: BIỂU ĐỒ KIỂM SOÁT SHEWHART Control char

PowerPoint Presentation

THƯ VIỆN PHÁP LUẬT

CHÍNH PHỦ CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc Số: 119/2018/NĐ-CP Hà Nội, ngày 12 tháng 9 năm 2018 N

CÔNG BÁO/Số ngày PHẦN I. VĂN BẢN QUY PHẠM PHÁP LUẬT BỘ NỘI VỤ BỘ NỘI VỤ Số: 09/2010/TT-BNV CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Đ

BỘ NÔNG NGHIỆP VÀ PHÁT TRIỂN NÔNG THÔN VIỆN KHOA HỌC THỦY LỢI VIỆT NAM HỆ THỐNG QUẢN LÝ CHẤT LƯỢNG THEO TIÊU CHUẨN QUỐC TẾ ISO 9001:2015 SỔ TAY CHẤT L

Tạp chí Khoa học công nghệ và Thực phẩm số 11 (2017) NGHIÊN CỨU ỨNG DỤNG MÃ NGUỒN MỞ JOOMLA XÂY DỰNG WEBSITE HỖ TRỢ DẠY HỌC VẬT LÝ ĐẠI CƢƠNG Ngu

ĐẠI HỌC QUỐC GIA HÀ NỘICỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Độc lập - Tự do - Hạnh phúc DANH SÁCH SINH VIÊN ĐẠI HỌC HỆ CHÍNH QU

Microsoft Word ke toan_da bs muc 9

CHÍNH PHỦ Số: 01/2017/NĐ-CP CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc Hà Nội, ngày 06 tháng 01 năm 2017 NGHỊ ĐỊNH Sửa đổi, bổ sun

Nội dung chương 3 IT1110 Tin học đại cương Phần I: Tin học căn bản Chương 3: Hệ thống máy tính 3.1. Giới thiệu 3.2. Chức năng và các thành phần của má

ĐÊ CƯƠNG CHI TIẾT HỌC PHẦN

THƯ MỤC SÁCH ÔN LUYỆN THI TỐT NGHIỆP THPT QUỐC GIA NĂM 2018 Thư viện Trường THPT Lê Quý Đôn 1

TÀI LIỆU ĐẠI HỘI ĐỒNG CỔ ĐÔNG THƯỜNG NIÊN NĂM TÀI CHÍNH 2018 Ngày 26 tháng 04 năm 2019

BỘ LAO ĐỘNG - THƯƠNG BINH VÀ XÃ HỘI TRƯỜNG ĐÀO TẠO, BỒI DƯỠNG CÁN BỘ, CÔNG CHỨC LAO ĐỘNG - XÃ HỘI Chủ biên: TS. Nguyễn T

QUỐC HỘI Luật số: /201 /QH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc Dự thảo 2 LUẬT CHỨNG KHOÁN Căn cứ vào Hiến pháp nước Cộng hò

AC401VN Du thao BCTC da kiem toan Portcoast_sent

KIỂM TOÁN NHÀ NƯỚC CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc Số: 1173/QĐ-KTNN Hà Nội, ngày 27 tháng 7 nă

TỈNH ỦY QUẢNG NGÃI VĂN PHÒNG * Số 509-BC/VPTU ĐẢNG CỘNG SẢN VIỆT NAM Quảng Ngãi, ngày 12 tháng 11 năm 2018 BÁO CÁO kết quả thực hiện nhiệm vụ năm 2018

00

Chương Trình Đào Tạo

CÔNG BÁO/Số /Ngày BỘ TÀI CHÍNH BỘ TÀI CHÍNH Số: 212/2014/TT-BTC CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc

Lập trình cấu trúc trong Visual Basic Lập trình cấu trúc trong Visual Basic Bởi: Nguyễn Sơn Học xong chương này, sinh viên phải nắm bắt được các vấn đ

Hướng dẫn Bắt đầu Nhanh Microsoft Publisher 2013 trông khác với các phiên bản trước, vì vậy chúng tôi tạo ra hướng dẫn này để giúp bạn dê dàng nắm bắt

Microsoft Word - 38_CDR_ _Kinhdoanhthuongmai.doc

Toán Ứng Dụng Biên tập bởi: PGS.TS. Nguyễn Hải Thanh

Chương 4 PHƯƠNG PHÁP DỰ BÁO TỶ GIÁ HỐI ĐOÁI ( Dựa theo tài liệu Đại Học Công NghiệpTPHCM và các tài liệu khác)

Microsoft Word - SGV-Q4.doc

a VĂN PHÒNG CHÍNH PHỦ CỤC KIỂM SOÁT THỦ TỤC HÀNH CHÍNH ĐIỂM BÁO Ngày 16 tháng 01 năm 2019

Tom tat luan van - Nhung cuoi.doc

BCTC Hop nhat Transimex-Q xls

LUẬN VĂN: Áp dụng quản lý rủi ro vào qui trình thủ tục hải quan đối với hàng hóa xuất, nhập khẩu

QUAN TRỌNG LÀ BỀN VỮNG BÁO CÁO THƯỜNG NIÊN

Successful Christian Living

BẢN ĐIỀU KIỆN GIAO DỊCH DỊCH VỤ NGÂN HÀNG ĐIỆN TỬ (Ban hành kèm theo Quyết định số 4209/2017/QĐ-TGĐ14 của Tổng Giám đốc MSB) Điều 1. Điều kiện sử dụng

Quy_che_quan_tri_Cty_KHP.doc

CÔNG TY CỔ PHẦN TẬP ĐOÀN KỸ NGHỆ GỖ TRƯỜNG THÀNH BẢNG CÂN ĐỐI KẾ TOÁN HỢP NHẤT Ngày 30 tháng 06 năm 2011 Đơn vị tính là Đồng Việt Nam ngoại trừ có ghi

Microsoft Word - Ēiễm báo

Microsoft Word - Module 2. Cau truc cua may tinh dien tu.doc

PowerPoint Presentation

BÁO CÁO THƯỜNG NIÊN 2011

SM-N9208 SM-N920C SM-N920CD SM-N920I Sách hướng dẫn sử dụng Vietnamese. 08/2015. Rev.1.0

Microsoft Word Bia va muc luc.doc

HỘI THI TIN HỌC TRẺ TỈNH AN GIANG ĐỀ CHÍNH THỨC ĐỀ THI LÝ THUYẾT BẢNG A - KHỐI TIỂU HỌC Khóa ngày: Thời gian : 20 phút (không kể thời gian

PGS - Tai lieu DHDCD v2

Microsoft Word - 8. Practical IT Deparment Plan Guidance_Final

Microsoft Word - De An to chuc thi DGNLNN- DHNN-Ēua lên Website

ĐIỀU LỆ NGÂN HÀNG THƯƠNG MẠI c ố PHÀN BẮC Á Tháng 4 năm

SM-G935F SM-G935FD Sách hướng dẫn sử dụng Vietnamese. 02/2016. Rev.1.0

2018 Nhận xét, phân tích, góp ý cho Chương trình môn Tin học trong Chương trình Giáo dục Phổ thông mới

50 n¨m h¶i qu©n nh©n d©n viÖt nam anh hïng

SM-G925F Sách hướng dẫn sử dụng Vietnamese. 04/2015. Rev.1.0

(Tái bản lần thứ hai)

TRƯỜNG ĐẠI HỌC Y TẾ CÔNG CỘNG TÀI LIỆU HƯỚNG DẪN BÀI TẬP CHUYÊN ĐỀ QUẢN LÝ Dành cho học viên Chuyên khoa II Tổ chức quản lý y tế Hà Nội, 2018

MỞ ĐẦU

MỘT SỐ LƯU Ý KHI DẠY CÁC TIẾT ÔN TẬP CHƯƠNG Môn Tin học cung cấp cho học sinh những kiến thức phổ thông về ngành khoa học tin học, hình thành và phát

Microsoft Word - 33_CDR_ _Kinh te.doc

BỘ GIÁO DỤC VÀ ĐÀO TẠO Số: 155/QĐ-BGDĐT CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập Tự do Hạnh phúc Hà Nội, ngày 10 tháng 01 năm 2013 QUYẾT ĐỊNH Ban hà

QUỐC HỘI

CHƯƠNG TRÌNH ĐÀO TẠO

QUY ĐỊNH HỌC PHẦN THỰC TẬP TỐT NGHIỆP ĐỐI VỚI SINH VIÊN CÁC HỆ ĐẠI HỌC LOẠI HÌNH ĐÀO TẠO CHÍNH QUY (Ban hành kèm theo Quyết định số: 1206 /QĐ-HVTC ngà

Số 93 / T TIN TỨC - SỰ KIỆN Công đoàn SCIC với các hoạt động kỷ niệm 109 năm ngày Quốc tế phụ nữ (Tr 2) NGHIÊN CỨU TRAO ĐỔI Thúc đẩy chuyển giao

HỢP ĐỒNG MỞ TÀI KHOẢN GIAO DỊCH KÝ QUỸ CHỨNG KHOÁN Hôm nay, ngày tháng năm 20..., tại trụ sở Công ty TNHH Chứng khoán ACB chúng tôi gồm có: A. BÊN CHO

ỦY BAN NHÂN DÂN THÀNH PHỐ HÀ NỘI

Quyết định về duyệt đồ án quy hoạch phân khu tỷ lệ 1/2000 khu dân cư phía Bắc đường cao tốc thành phố Hồ Chí Minh -Long Thành - Dầu Giây, phường Phú

CÔNG BÁO/Số /Ngày QUY TRÌNH KIỂM TOÁN BÁO CÁO QUYẾT TOÁN NGÂN SÁCH NHÀ NƯỚC (Ban hành kèm theo Quyết định số 03/2013/QĐ-KTNN ng

PowerPoint Presentation

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC LUẬT TP.HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập Tự do Hạnh phúc THÔNG BÁO Tổng khai giảng các khóa đào ng

TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN KỶ YẾU HỘI NGHỊ ĐỔI MỚI PPGD VÀ TÌM BIỆN PHÁP NÂNG CAO NĂNG LỰC NCKH NHA TRANG 14/06/2013

ĐIỀU KHOẢN, ĐIỀU KIỆN VỀ VIỆC SỬ DỤNG DỊCH VỤ NGÂN HÀNG ĐIỆN TỬ - EBANK ĐIỀU 1. ĐIỀU 2. Phạm vi áp dụng Điều khoản, điều kiện này áp dụng đối với các

VT_UTZ_Certification-Protocol_Vietnamese

NẮM BẮT XU HƯỚNG BỨT PHÁ THÀNH CÔNG 1

TÀI LIỆU HỌP ĐẠI HỘI ĐỒNG CỔ ĐÔNG THƯỜNG NIÊN NĂM 2019 Ngày 09 tháng 4 năm 2019

Bản ghi:

CHƯƠNG TRÌNH DỊCH BÀI 1: NHẬP MÔN

Nội dung 1. Giới thiệu môn học 2. Khái niệm chương trình dịch 3. Cấu trúc một chương trình dịch 4. Hệ thống dịch vs Chương trình dịch 5. Chương trình dịch trong thực tế 6. Mục tiêu của môn học 7. Phát biểu bài toán Dịch 8. Câu hỏi và thảo luận TRƯƠNG XUÂN NAM 2

Phần 1 Giới thiệu môn học TRƯƠNG XUÂN NAM 3

Môn học chương trình dịch Tên môn: chương trình dịch (compiler) Số tín chỉ: 4 (3 lý thuyết + 1 bài tập) Nội dung chính: Giới thiệu chung Hệ thống dịch đơn giản Phân tích từ vựng Phân tích cú pháp Các vấn đề khác Giảng viên: Trương Xuân Nam, khoa CNTT Email: truongxuannam@gmail.com TRƯƠNG XUÂN NAM 4

Tài liệu môn học Giáo trình chính: Compilers: Principles, Techniques and Tools Tài liệu tham khảo: Nhập môn chương trình dịch Phạm Hồng Nguyên, ĐH Công nghệ Online: slide bài giảng, bài tập, điểm số, thông báo, sẽ được đưa lên website http://txnam.net, mục BÀI GIẢNG TRƯƠNG XUÂN NAM 5

Kiến thức yêu cầu Sử dụng được một ngôn ngữ lập trình phổ thông (C/C++, C#, Java, ) để viết chương trình Hiểu biết về tổ chức của máy tính: Hoạt động của CPU (lệnh, cờ, thanh ghi, ô nhớ, ) Hoạt động của stack Ngôn ngữ assembly Lý thuyết tính toán: automat, biểu thức chính quy, văn phạm phi ngữ cảnh, phân loại Chomsky, Cấu trúc dữ liệu: mảng, stack, cây, danh sách, Thuật toán: tìm kiếm, sắp xếp, từ điển, duyệt cây, TRƯƠNG XUÂN NAM 6

Đánh giá kết quả Điểm môn học = ĐQT x 30% + ĐTCK x 70% Điểm quá trình: Điểm danh Bài làm trên lớp Bài tập (nộp cho thầy giáo) Điểm thi cuối kỳ: Thi viết Chỉ bài tập, không lý thuyết Được sử dụng tài liệu tham khảo Không có giới hạn nội dung ôn tập TRƯƠNG XUÂN NAM 7

Tại sao phải học môn này? Để có kiến thức về chương trình dịch Để có hiểu biết về điểm mạnh, điểm yếu của các ngôn ngữ lập trình, có lựa chọn ngôn ngữ lập trình phù hợp với công việc của bạn Để có hiểu biết về cách thức hoạt động của các hệ thống dịch và khai thác tốt hơn các hệ thống đó Để có nâng cao kĩ năng viết chương trình Để có thêm lựa chọn cho đề tài làm tốt nghiệp Để có điểm môn học và được cấp bằng TRƯƠNG XUÂN NAM 8

Phần 2 Khái niệm chương trình dịch TRƯƠNG XUÂN NAM 9

Khái niệm chương trình dịch Tổng quát nhất: chương trình dịch là phần mềm hệ thống chuyển đổi đoạn văn viết trong ngôn ngữ A sang đoạn văn tương đương viết trong ngôn ngữ B Input Software Output Source String Compiler Destination String Grammar Compiler-Compiler Compiler TRƯƠNG XUÂN NAM 10

Khái niệm chương trình dịch Định nghĩa như vậy quá tổng quát, bài toán dịch ngôn ngữ một cách tổng quát chưa có lời giải đủ tốt Người ta cố gắng giải quyết các bài toán cụ thể hơn và có ứng dụng thực tế hơn, chẳng hạn: Dịch một ngôn ngữ lập trình thành mã máy Dịch một ngôn ngữ lập trình bậc cao thành ngôn ngữ bậc thấp hơn Chuyển đổi đoạn mã giữa các ngôn ngữ lập trình Kiểm tra chính tả, ngữ pháp của các đoạn văn Mô tả hình ảnh (dịch từ hình ảnh thành văn bản) TRƯƠNG XUÂN NAM 11

Biên dịch ngôn ngữ lập trình Trong các bài toán trên, dịch từ ngôn ngữ lập trình thành mã máy là bài toán quan trọng, đóng góp rất lớn vào sự phát triển của ngành máy tính Lập trình viên không thể viết chương trình lớn với mã máy vì quá phức tạp, dễ gây lỗi, nhàm chán Ban đầu chỉ là bộ dịch đơn giản từ ngôn ngữ cấp thấp (assembly) thành mã máy Tăng năng suất của lập trình viên (một dòng mã cấp cao tương đương với vài nghìn dòng mã máy) Đây là bài toán nghiên cứu chính của môn học TRƯƠNG XUÂN NAM 12

Đặc trưng của chương trình dịch Một chương trình dịch tốt cần có các đặc trưng sau: Tính toàn vẹn: kết quả ở ngôn ngữ đích phải hoàn toàn tương đương với đầu vào viết ở ngôn ngữ nguồn Tính hiệu quả: chương trình dịch sử dụng không quá nhiều bộ nhớ và công suất tính toán, kết quả ở ngôn ngữ đích là đủ tốt Tính trong suốt: chương trình dịch phải rõ ràng về kết quả sau từ bước thực hiện, giúp người dùng có thể hiệu chỉnh và sửa lỗi nếu có sau từng bước thực hiện Tính chịu lỗi: chương trình có thể chấp nhận một số lỗi của đầu vào và đưa ra các gợi ý xử lý phù hợp. Chương trình dừng ở ngay lỗi đầu tiên không thể coi là tốt TRƯƠNG XUÂN NAM 13

Phân loại chương trình dịch Phân loại cổ điển: Trình biên dịch (compiler): nhận toàn bộ nguồn rồi dịch sang đích một lượt Trình thông dịch (interpreter): nhận mã nguồn từng phần, nhận được phần nào dịch (và thực thi) phần đó Nhận xét: Compiler hoạt động giống như dịch giả Interpreter hoạt động giống như người phiên dịch (các cuộc giao tiếp) Hiện nay: ranh giới giữa compiler và interpreter ngày càng mờ dần TRƯƠNG XUÂN NAM 14

Phân loại chương trình dịch Ngay cả biên dịch cũng được chia thành 2 loại: Tĩnh (statically): mã sinh ra chạy trực tiếp ngay Động (dynamically): mã sinh ra cần thao tác tái định vị rồi mới có thể chạy được Một số ngôn ngữ lập trình kết hợp cả compiler và interpreter, chẳng hạn như java Mã java được biên dịch thành mã bytecode Máy ảo chạy mã bytecode ở dạng thông dịch Một số sử dụng compiler và just-in-time compiler Mã C# được biên dịch thành mã IL Mã IL được biên dịch thành mã máy trong lần chạy đầu TRƯƠNG XUÂN NAM 15

Phần 3 Cấu trúc một chương trình dịch TRƯƠNG XUÂN NAM 16

Cấu trúc một chương trình dịch Mã nguồn Phân tích từ vựng Phân tích cú pháp Phân tích Bộ quản lý kí hiệu Phân tích ngữ nghĩa Sinh mã trung gian Tối ưu mã trung gian Tổng hợp Sinh mã đích Mã đích TRƯƠNG XUÂN NAM 17

Pha 1: phân tích từ vựng Phân tích từ vựng (lexical analysis hay scanner) có nhiệm vụ chính sau đây Đọc dữ liệu đầu vào, loại bỏ các khối văn bản không cần thiết (dấu cách, dấu tab, các ghi chú, ) Chia khối văn bản còn lại thành các từ vựng đồng thời xác định từ loại cho các từ vựng đó Các từ khóa của ngôn ngữ: for, if, switch, Tên riêng: i, j, mylist, Các hằng số: 17, 3.14, %s, \n, Các kí hiệu: (, ), ;, +, Các từ vựng thường được định nghĩa bởi từ điển (danh sách các từ khóa) và các biểu thức chính quy TRƯƠNG XUÂN NAM 18

Pha 1: phân tích từ vựng Ví dụ về hoạt động của bộ phân tích từ vựng Đầu vào: if (a >= b) max = a; Kết quả: 1. if từ khóa 2. ( kí hiệu (mở ngoặc) 3. a tên riêng 4. >= kí hiệu (lớn hơn hoặc bằng) 5. b tên riêng 6. ) kí hiệu (đóng ngoặc) 7. max tên riêng 8. = kí hiệu (bằng) 9. a tên riêng 10. ; kí hiệu (chấm phẩy) TRƯƠNG XUÂN NAM 19

Pha 2: phân tích cú pháp Phân tích cú pháp (syntax analysis hay parser) có nhiệm vụ chính là sinh cây phân tích (hay cây cú pháp syntax tree) cho dãy từ vựng Các luật cú pháp thường được thể hiện ở dạng các luật phi ngữ cảnh (hoặc mở rộng) Có rất nhiều phương pháp xây dựng một parser: Sử dụng các kĩ thuật duyệt (top-down hoặc bottom-up) Sử dụng kĩ thuật bảng phương án (automat đẩy xuống) Thực tế: ngay cả với một ngôn ngữ có cú pháp đơn giản, xây dựng một parser hiệu quả cho ngôn ngữ đó cũng là vấn đề khó TRƯƠNG XUÂN NAM 20

Pha 2: phân tích cú pháp Ví dụ về hoạt động của bộ phân tích từ vựng Đầu vào: if (a >= b) max = a; Kết quả: cmd ifexp cmd exp exp exp exp if ( a >= b ) max = a ; TRƯƠNG XUÂN NAM 21

Pha 3: phân tích ngữ nghĩa Phân tích ngữ nghĩa (semantic analysis) sẽ dựa trên cây phân tích để thực hiện 2 việc chính: Kiểm tra xem chương trình nguồn có các lỗi về ngữ nghĩa hay không Tổng hợp các thông tin phục vụ cho giai đoạn sinh mã Một vài tình huống về ngữ nghĩa: Không tương thích kiểu (gán chuỗi vào số) Không chuyển kiểu được Tổng hợp thông tin để sinh mã: Quyết định về kiểu của hằng số, biểu thức Tính toán trực tiếp các giá trị tĩnh TRƯƠNG XUÂN NAM 22

Pha 4: sinh mã trung gian Thông thường các trình dịch sử dụng loại mã 3 địa chỉ (TAC three-address code) hoặc mã SSA (static single assignment) làm mã trung gian Các loại mã này giúp cho việc tối ưu hóa dễ dàng hơn (thực hiện ở pha sau) Ngoài ra bước này còn phân tích hoạt động của chương trình (control flow analysis) để cảnh báo một số rủi ro trong mã nguồn, chẳng hạn: Biến sử dụng nhưng chưa khởi tạo Đoạn mã vô dụng (không bao giờ chạy tới) TRƯƠNG XUÂN NAM 23

Pha 4: sinh mã trung gian // Mã nguồn for (i = 0; i < 10; ++i) b[i] = i*i; // Mã trung gian dạng TAC t1 := 0 ; initialize i L1: if t1 >= 10 goto L2 ; conditional jump t2 := t1 * t1 ; square of i t3 := t1 * 4 ; word-align address t4 := b + t3 ; address to store i*i *t4 := t2 ; store through pointer t1 := t1 + 1 ; increase i goto L1 ; repeat loop L2: TRƯƠNG XUÂN NAM 24

Pha 5: tối ưu mã trung gian Tối ưu (optimization) mã trung gian tạo ra mã có tốc độ chạy nhanh hơn Không phải mã ngắn hơn thì chạy nhanh hơn Nhiều trình dịch cho phép lựa chọn chiến lược tối ưu mã thích hợp với mục đích sử dụng Một số kĩ thuật tối ưu kinh điển: Loại bỏ đoạn mã dư thừa Tận dụng lại kết quả tính toán đã có Sử dụng thanh ghi thay vì bộ nhớ Tách đoạn mã thành nhiều đoạn con chạy song song TRƯƠNG XUÂN NAM 25

Pha 5: tối ưu mã trung gian Nhiều kĩ thuật phụ thuộc vào kiểu của bộ xử lý Máy tính có nhiều CPU Máy tính có siêu phân luồng Máy tính có bộ tiên đoán rẽ nhánh Ví dụ về tối ưu mã trung gian Đoạn mã: a = b; c = a + 10; Được thay bằng: a = b; c = b + 10; Lý do: 2 lệnh trên có thể chạy song song trên máy nhiều CPU nên tốt hơn TRƯƠNG XUÂN NAM 26

Pha 6: sinh mã đích Sinh mã đích (code generation) tạo ra mã đích (thường là dạng mã máy hoặc mã assembly) từ các mã TAC hoặc SSA đã được tối ưu Đây là bước tương đối đơn giản (so với các bước khác), việc chuyển đổi từ mã TAC hoặc SSA sang các mã máy hoặc mã trung gian thường sử dụng các luật chuyển đổi đơn giản dạng nếu-thì Ngoài ra bước này có thể bổ sung một số thông tin trong trường hợp mã đích là loại tái định vị TRƯƠNG XUÂN NAM 27

Phân tích và Tổng hợp 6 bước biên dịch có thể chia thành 2 giai đoạn: Kỳ đầu (front-end), còn gọi là giai đoạn phân tích: Gồm 3 bước đầu tiên Giúp biến đổi từ ngôn ngữ nguồn sang một mô hình trung gian Không phụ thuộc vào ngôn ngữ đích Kỳ sau (back-end), còn gọi là giai đoạn tổng hợp: Gồm 3 bước sau cùng Giúp chuyển đổi từ mô hình trung gian sang ngôn ngữ đích Không phụ thuộc vào ngôn ngữ nguồn Thực tế thì có nhiều ứng dụng chỉ sử dụng một vài phần của trình biên dịch; chẳng hạn như ứng dụng kiểm lỗi ngữ pháp trong các trình soạn thảo văn bản TRƯƠNG XUÂN NAM 28

Câu hỏi Hãy chỉ ra các bước hoạt động của trình dịch hợp ngữ (assembler) tương ứng với 6 pha của một compiler được mô tả ở trên Một dịch giả dịch một bài thơ từ tiếng Anh sang tiếng Việt, theo bạn, dịch giả đó sẽ thực hiện những pha nào trong 6 pha của một complier? Hãy mô tả quá trình thực hiện và kết quả các bước đó Một nhân chứng mô tả lại hình ảnh của đối tượng trong một vụ án cho cảnh sát, thì nhân chứng đó thực hiện những pha nào trong 6 pha trên? TRƯƠNG XUÂN NAM 29

Phần 4 Hệ thống dịch vs Chương trình dịch TRƯƠNG XUÂN NAM 30

Hệ thống dịch vs Chương trình dịch Chương trình dịch hiệu quả phải kèm với nó nhiều công cụ hỗ trợ, những công cụ này cùng với chương trình dịch tạo thành một hệ thống dịch hoàn chỉnh Chẳng hạn: Các IDE (môi trường phát triển tích hợp) của các ngôn ngữ lập trình, ngoài trình biên dịch thì còn nhiều công cụ khác như: bộ tiền xử lý mã nguồn, công cụ soạn thảo mã nguồn, công cụ hỗ trợ viết mã, công cụ trợ giúp, công cụ gỡ rối, công cụ phân tích mã, Các công cụ dịch tự động ngôn ngữ tự nhiên, ngoài module dịch tự động còn có các công cụ khác: bộ nhập liệu, từ điển, bộ nhận dạng, bộ tổng hợp tiếng nói, TRƯƠNG XUÂN NAM 31

Hệ thống dịch vs Chương trình dịch Do việc nghiên cứu về chương trình dịch đã rất sâu sắc, nên nhiều thành phần của chương trình dịch đã được chuẩn hóa, và có thể tách ra đứng độc lập Chẳng hạn: Bộ công cụ Lex/Flex: sinh tự động các scanner Bộ công cụ Yacc/Bison: sinh tự động các parser Nhưng module độc lập này có thể có những ứng dụng riêng và có thể thay thế lẫn nhau Chẳng hạn: Hệ thống eclipse: có thể hỗ trợ nhiều ngôn ngữ lập trình bằng cách thêm các module mới TRƯƠNG XUÂN NAM 32

Phần 5 Chương trình dịch trong thực tế TRƯƠNG XUÂN NAM 33

Chương trình dịch trong thực tế Từ ứng dụng ban đầu là chương trình dịch cho ngôn ngữ lập trình, nhiều kĩ thuật đã được áp dụng vào các nhiều ngành khác Bộ kiểm tra chính tả Dùng cho các ngôn ngữ tự nhiên (trong các phần mềm soạn thảo văn bản) Trợ giúp việc soạn thảo (intellisense, word suggestion) Bộ kiểm tra ngữ pháp Kiểm tra lỗi nhanh khi viết ngôn ngữ lập trình Soát lỗi khi viết tài liệu bằng ngôn ngữ tự nhiên TRƯƠNG XUÂN NAM 34

Chương trình dịch trong thực tế Sinh các bộ nhận dạng mã độc / virus: Mỗi mã độc / virus được nhận dạng bởi một mẫu (pattern) hoặc một automat Kết hợp nhiều automat lại làm một để tăng hiệu quả tốc độ của việc nhận dạng (thay vì phải chạy một automat cho mỗi virus, ta chạy một automat phát hiện đồng thời nhiều virus) Các công cụ về ngôn ngữ: Bộ tìm kiếm văn bản hiệu quả Bộ phát hiện ngôn ngữ Bộ diễn dịch các giao thức TRƯƠNG XUÂN NAM 35

Phần 6 Mục tiêu của môn học TRƯƠNG XUÂN NAM 36

Mục tiêu của môn học Mục tiêu về kiến thức: Nắm được khái niệm chương trình dịch Nắm được cách thức hoạt động của hệ thống dịch Nắm được các phương pháp phân tích từ vựng đơn giản Nắm được một số phương pháp phân tích văn phạm Hiểu được các vấn đề về ngữ nghĩa, sinh mã, tối ưu, Ứng dụng thực tế: Áp dụng vào các lĩnh vực khác: giao thức trao đổi thông tin, các công cụ xử lý văn bản, xử lý ngôn ngữ tự nhiên Nghiên cứu các vấn đề xa hơn trong chương trình dịch Nghiên cứu các ứng dụng mới của hệ thống dịch TRƯƠNG XUÂN NAM 37

Phần 7 Phát biểu bài toán Dịch TRƯƠNG XUÂN NAM 38

Phát biểu bài toán Dịch Như tìm hiểu ở các phần trên, chúng ta có thể thấy: Chương trình dịch có rất nhiều biến thể: biên dịch, thông dịch, kiểm tra ngữ pháp, kiểm tra lỗi chính tả, Chương trình dịch rất phong phú ở đầu vào và đầu ra: dịch từ ngôn ngữ tự nhiên sang ngôn ngữ tự nhiên, dịch ngôn ngữ lập trình sang mã máy, dịch từ biểu thức chính quy thành automat, Để tránh vấn đề quá lan man, cần thu gọn đối tượng nghiên cứu của môn học bằng cách hạn chế chúng lại, ta phát biểu bài toán Dịch như sau: nghiên cứu các bước hoạt động của hệ thống biên dịch một ngôn ngữ lập trình đơn giản thành mã máy TRƯƠNG XUÂN NAM 39

Phần 8 Câu hỏi và thảo luận TRƯƠNG XUÂN NAM 40

Câu hỏi và thảo luận 1. Nêu các ưu điểm của biên dịch so với thông dịch 2. Nêu các ưu điểm của thông dịch so với biên dịch 3. Sự giống nhau và khác nhau giữa bài toán dịch ngôn ngữ lập trình thành mã máy và dịch từ tiếng Anh sang tiếng Việt 4. Sự giống nhau và khác nhau giữa một chương trình dịch và một người biên dịch 5. Kể tên một chương trình không phải chương trình dịch nhưng lại hoạt động như chương trình dịch TRƯƠNG XUÂN NAM 41