270 likes | 494 Views
Giáo viên hướng dẫn: TS. Nguyễn Thanh Phương Sinh viên thực hiện: Nguyễn Việt Cường – 0612051 Nguyễn Thành Trung – 0612468. Khảo sát và xây dựng thử nghiệm chuyến trước của trình biên dịch dành cho ngôn ngữ ANSI-C giản lược. Nội dung trình bày. Tổng quan về Trình Biên Dịch.
E N D
Giáo viên hướng dẫn: TS. Nguyễn Thanh Phương Sinh viên thực hiện: Nguyễn Việt Cường – 0612051 Nguyễn Thành Trung – 0612468 Khảo sát và xây dựng thử nghiệm chuyến trước của trình biên dịch dành cho ngôn ngữ ANSI-C giản lược.
Nội dung trình bày • Tổng quan về Trình Biên Dịch. • Giới thiệu về chuyến trước và các công cụ hỗ trợ. • Bảng danh biểu • Phân tích từ vựng • Phân tích cú pháp • Phân tích ngữ nghĩa • Phát sinh mã trung gian • Dịch các cấu trúc. • Cấu trúc khai báo. • Cấu trúc điều khiển (lệnh while) • Tổng kết.
Tổng quan về Trình Biên Dịch • Objective • Add your objective here • Results • Add your results here
Nội dung trình bày • Tổng quan về Trình Biên Dịch. • Giới thiệu về chuyến trước và các công cụ hỗ trợ. • Bảng danh biểu • Phân tích từ vựng • Phân tích cú pháp • Phân tích ngữ nghĩa • Phát sinh mã trung gian • Dịch các cấu trúc. • Cấu trúc khai báo. • Cấu trúc điều khiển (lệnh while) • Tổng kết.
Nội dung trình bày • Tổng quan về Trình Biên Dịch. • Giới thiệu về chuyến trước và các công cụ hỗ trợ. • Bảng danh biểu • Phân tích từ vựng • Phân tích cú pháp • Phân tích ngữ nghĩa • Phát sinh mã trung gian • Dịch các cấu trúc. • Cấu trúc khai báo. • Cấu trúc điều khiển (lệnh while) • Tổng kết.
Phân tích từ vựng • Nhiệm vụ chủ yếu : đọc các ký hiệu nhập rồi tạo ra một chuỗi các token. Ví dụ : COUNT = COUNT + 1 ; IDENTIFIER ASSIGN_OP IDENTIFIER ADD_OP CONSTANT PUNC • Giao thức liên hệ của bộ phân tích từ vựng: Chương trình nguồn token Bộ phân tích từ vựng Bộ phân tích cú pháp yêu cầu token Bảng danh biểu
File mô tả nguồn lex.l FLEX Compiler lex.yy.c lex.yy.c C Compiler lex.out Chương trình nguồn lex.out chuỗi token Bộ phát sinh trình phân tích từ vựng - FLEX • FLEX – phiên bản cải tiến của LEX – được các tác giả Jef Poskanzer, Vern Paxson và Van Jacobson cùng phát triển. • Nhiệm vụ : phát sinh ra trình phân tích từ vựng từ tập luật do người dùng định nghĩa. • Quy trình vận hành :
Nội dung trình bày • Tổng quan về Trình Biên Dịch. • Giới thiệu về chuyến trước và các công cụ hỗ trợ. • Bảng danh biểu • Phân tích từ vựng • Phân tích cú pháp • Phân tích ngữ nghĩa • Phát sinh mã trung gian • Dịch các cấu trúc. • Cấu trúc khai báo. • Cấu trúc điều khiển (lệnh while) • Tổng kết.
Phân tích cú pháp • Kiểm tra tính hợp lệ của chuỗi token bằng cách xây dựng cây phân tích cú pháp. • Sử dụng phương pháp phân tích cú pháp từ dưới lên. Ví dụ: Văn phạm mô tả biểu thức đơn giản : • s e • e e + t • | t • t t * f • | f • f ( e ) • |NUM Chúng ta sẽ tiến hành kiểm tra tính hợp lệ của câu nhập : NUM + NUM * NUM
Phương pháp phân tích cú pháp từ dưới lên s e e + t t t * f f f NUM NUM NUM
Mô tả tập luật sinh, luật ngữ nghĩa (*.y) Bản mô tả các trạng thái (y.out) --verbose Bison --defines Bản định nghĩa các token (yyout.h) Bộ phân tích cú pháp bằng mã C (yyout.c) Bộ phát sinh trình phân tích cú pháp - BISON • BISON – phiên bản cải tiến của YACC – được xây dựng bởi Robert Corbett và Richard Stallman. • Nhiệm vụ : phát sinh ra bộ phân tích cú pháp từ tập luật sinh do người dùng định nghĩa. • Quy trình vận hành :
Nội dung trình bày • Tổng quan về Trình Biên Dịch. • Giới thiệu về chuyến trước và các công cụ hỗ trợ. • Bảng danh biểu • Phân tích từ vựng • Phân tích cú pháp • Phân tích ngữ nghĩa • Phát sinh mã trung gian • Dịch các cấu trúc. • Cấu trúc khai báo. • Cấu trúc điều khiển (lệnh while) • Tổng kết.
Phân tích ngữ nghĩa • Mỗi ký tự văn phạm đều mang một thuộc tính.
Nội dung trình bày • Tổng quan về Trình Biên Dịch. • Giới thiệu về chuyến trước và các công cụ hỗ trợ. • Bảng danh biểu • Phân tích từ vựng • Phân tích cú pháp • Phân tích ngữ nghĩa • Phát sinh mã trung gian • Dịch các cấu trúc. • Cấu trúc khai báo. • Cấu trúc điều khiển (lệnh while) • Tổng kết.
Nội dung trình bày • Tổng quan về Trình Biên Dịch. • Giới thiệu về chuyến trước và các công cụ hỗ trợ. • Bảng danh biểu • Phân tích từ vựng • Phân tích cú pháp • Phân tích ngữ nghĩa • Phát sinh mã trung gian • Dịch các cấu trúc. • Cấu trúc khai báo. • Cấu trúc điều khiển (lệnh while) • Tổng kết.
Nội dung trình bày • Tổng quan về Trình Biên Dịch. • Giới thiệu về chuyến trước và các công cụ hỗ trợ. • Bảng danh biểu • Phân tích từ vựng • Phân tích cú pháp • Phân tích ngữ nghĩa • Phát sinh mã trung gian • Dịch các cấu trúc. • Cấu trúc khai báo. • Cấu trúc điều khiển (lệnh while) • Tổng kết.
Dịch cấu trúc điều khiển (lệnh while) • Cấu trúc lệnh while : WHILE‘(’ test ‘)’ statement • Phân bố mã trung gian cho lệnh while : gototrueLabel begin: gotofalseLabel trueLabel: falseLabel:
while(i < b && i < c) i++; iteration_statement WHILE ‘(’ test ‘)’ statement ACT07 t0 = i t1 = t0 + 1 i = t1 op12 ACT01 expr ACT06 op12 logical_and_expr__ op12 logical_and_expr ACT05 op1 op2 logical_and_expr AND_OP ACT03 ACT04 relational_expr op2 = i < c op1 ACT02 relational_expr op1 = i < b
Nội dung trình bày • Tổng quan về Trình Biên Dịch. • Giới thiệu về chuyến trước và các công cụ hỗ trợ. • Bảng danh biểu • Phân tích từ vựng • Phân tích cú pháp • Phân tích ngữ nghĩa • Phát sinh mã trung gian • Dịch các cấu trúc. • Cấu trúc khai báo. • Cấu trúc điều khiển (lệnh while) • Tổng kết.
Tổng kết • Add your conclusion here