Phân tích từ vựng

Download Report

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

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.
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
Nội dung trình bày
2
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ợ.
I.
II.
1.
2.
3.
4.
5.
Dịch các cấu trúc.
III.
1.
2.
IV.
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
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
3

Objective
 Add

your objective here
Results
 Add
your results here
Nội dung trình bày
4
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ợ.
I.
II.
1.
2.
3.
4.
5.
Dịch các cấu trúc.
III.
1.
2.
IV.
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
Cấu trúc khai báo.
Cấu trúc điều khiển (lệnh while)
Tổng kết.
Bảng danh biểu
5
Nội dung trình bày
6
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ợ.
I.
II.
1.
2.
3.
4.
5.
Dịch các cấu trúc.
III.
1.
2.
IV.
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
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
7

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
IDENTIFIER

= COUNT
+
1 ;
ASSIGN_OP IDENTIFIER
ADD_OP
CONSTANT
Giao thức liên hệ của bộ phân tích từ vựng:
Chương trình
nguồn
Bộ phân tích
từ vựng
token
yêu cầu
token
Bộ phân tích
cú pháp
Bảng danh biểu
PUNC
Bộ phát sinh trình phân tích từ vựng - FLEX
8



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 :
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
Nội dung trình bày
9
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ợ.
I.
II.
1.
2.
3.
4.
5.
Dịch các cấu trúc.
III.
1.
2.
IV.
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
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
10


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 :
1)
2)
s
e
3)
4)
t
5)
6)
7)
f


|

|

|
e
e + t
t
t * 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
11
s
e
e
+
t
t
t
f
f
NUM
NUM
*
f
NUM
Bộ phát sinh trình phân tích cú pháp - BISON
12



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 :
Mô tả tập luật sinh, luật
ngữ nghĩa (*.y)
--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ản mô tả các
trạng thái
(y.out)
Nội dung trình bày
13
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ợ.
I.
II.
1.
2.
3.
4.
5.
Dịch các cấu trúc.
III.
1.
2.
IV.
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
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
14

Mỗi ký tự văn phạm đều mang một thuộc tính.
Nội dung trình bày
15
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ợ.
I.
II.
1.
2.
3.
4.
5.
Dịch các cấu trúc.
III.
1.
2.
IV.
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
Cấu trúc khai báo.
Cấu trúc điều khiển (lệnh while)
Tổng kết.
Phát sinh mã trung gian
16
Nội dung trình bày
17
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ợ.
I.
II.
1.
2.
3.
4.
5.
Dịch các cấu trúc.
III.
1.
2.
IV.
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
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 khai báo
18
Nội dung trình bày
19
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ợ.
I.
II.
1.
2.
3.
4.
5.
Dịch các cấu trúc.
III.
1.
2.
IV.
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
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)
20


Cấu trúc lệnh while :
WHILE ‘(’ test ‘)’ statement
Phân bố mã trung gian cho lệnh while :
begin:
trueLabel:
Kiểm tra
biểu thức
điều kiện
statement1
goto begin
falseLabel:
...
goto trueLabel
goto falseLabel
21
while
(i < b && i < c)
i++;
iteration_statement
WHILE
‘(’
test
ACT01
op12
expr
‘)’
statement
t0 = i
t1 = t0 + 1
i = t1
ACT06
op12
logical_and_expr__
logical_and_expr
op1
logical_and_expr
op1
relational_expr
op1 = i < b
AND_OP
op12
ACT03
ACT05
op2
relational_expr
op2 = i < c
ACT02
ACT04
ACT07
22
Nội dung trình bày
23
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ợ.
I.
II.
1.
2.
3.
4.
5.
Dịch các cấu trúc.
III.
1.
2.
IV.
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
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
24

Add your conclusion here
Questions and Discussion
25
26
Run Number
Description
Result A
Result B
1
Condition A
True
True
2
Condition B
True
False
3
Condition C
False
False