
1
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG CĐ CÔNG NGHỆ THÔNG TIN
BÁO CÁO TỔNG KẾT
ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ
CẤP CƠ SỞ
NGHIÊN CỨU ỨNG DỤNG LEX/YACC TRONG TỰ
ĐỘNG PHÁT SINH MÃ NGUỒN
Mã số: T2016-07-04
Chủ nhiệm đề tài: ThS. Dương Thị Mai Nga
Đà Nẵng, 12/2016

2
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG CĐ CÔNG NGHỆ THÔNG TIN
BÁO CÁO TỔNG KẾT
ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ
CẤP CƠ SỞ
NGHIÊN CỨU ỨNG DỤNG LEX/YACC TRONG TỰ
ĐỘNG PHÁT SINH MÃ NGUỒN
Mã số: T2016-07-04
Xác nhận của cơ quan chủ trì đề tài Chủ nhiệm đề tài
Đà Nẵng, 12/2016

3
MỤC LỤC
MỞ ĐẦU ........................................................................................................... 8
CHƯƠNG 1: TỔNG QUAN VỀ TRÌNH BIÊN DỊCH .................................... 9
1.1. KHÁI NIỆM TRÌNH BIÊN DỊCH.................................................................................. 9
1.2. PHÂN TÍCH CHƯƠNG TRÌNH NGUỒN ................................................................... 10
TỔNG KẾT CHƯƠNG 1 ........................................................................................................ 14
CHƯƠNG 2: CÔNG CỤ LEX/ YACC .......................................................... 15
2.1. GIỚI THIỆU VỀ LEX/YACC ............................................................................................. 15
2.2. LEX ............................................................................................................................... 17
2.3. YACC ............................................................................................................................ 21
2.4. CÀI ĐẶT CÁC ỨNG DỤNG ............................................................................................ 25
TỔNG KẾT CHƯƠNG 2 ........................................................................................................ 25
CHƯƠNG 3: XÂY DỰNG CÔNG CỤ SINH MÃ NGUỒN ......................... 26
3.1. GIỚI THIỆU NGÔN NGỮ ĐẶC TẢ TTT .................................................................... 26
3.1.1. Cấu trúc cơ bản của một chương trình ............................................................ 26
3.1.2. Các lệnh của ngôn ngữ TTT............................................................................... 26
3.1.3. Các thành phần khác ........................................................................................ 27
3.2. XÂY DỰNG GIẢI PHÁP DỊCH NGÔN NGỮ TTT SANG NGÔN NGỮ C ...................... 29
3.3. XÂY DỰNG TRÌNH BIÊN DỊCH VÀ THỬ NGHIỆM ................................................... 35
KẾT LUẬN VÀ KIẾN NGHỊ ......................................................................... 38
TÀI LIỆU THAM KHẢO ............................................................................... 39
PHỤ LỤC ........................................................................................................ 40

4
DANH MỤC BẢNG BIỂU
Số hiệu bảng
Tên bảng
Trang
Bảng 2.1
Mô tả cách biểu diễn các biểu thức chính quy
18
Bảng 2.2
Biểu diễn một số ví dụ của biểu thức chính quy
18
Bảng 2.3
Danh sách các macro, biến được định nghĩa trước của lex
20
Bảng 3.1
Thứ tự ưu tiên các phép toán
28
Bảng 3.2
Bảng chuyển đổi từ vựng giữa ngôn ngữ TTT và ngôn ngữ
C
29
Bảng 3.3
Bảng chuyển đổi cú pháp giữa ngôn ngữ TTT và ngôn ngữ
C
31
Bảng 3.4
Chuyển đổi các phép toán CTT của ngôn ngữ TTT sang
ngôn ngữ C
33

5
DANH MỤC CÁC HÌNH
Số hiệu hình
Tên hình
Trang
Hình 1.1
Một trình biên dịch
9
Hình 1.2
Giao diện của bộ phân tích từ vựng trong trình biên dịch
11
Hình 1.3
Giao diện của bộ phân tích cú pháp trong trình biên dịch
12
Hình 1.4
Cây phân tích cú pháp cho câu lệnh:
position := initial + rate * 60
13
Hình 2.1
Ví dụ trình tự biên dịch đoạn mã nguồn a = b + c * d
15
Hình 2.2
Quy trình vận dụng và cách đặt tên với Lex, Yacc
16