Giáo trình Kiến trúc máy tính và Hệ 1CHƯƠNG TRÌNH DỊCH... Giáo trình Kiến trúc máy tính và Hệ 3Nội dung giáo trình CHƯƠNG 1.. Giáo trình Kiến trúc máy tính và Hệ điều hànhchữ cái của các
Trang 1Giáo trình Kiến trúc máy tính và Hệ 1
CHƯƠNG TRÌNH DỊCH
Trang 2Giáo trình Kiến trúc máy tính và Hệ 2
Trang 3Giáo trình Kiến trúc máy tính và Hệ 3
Nội dung giáo trình
CHƯƠNG 1 NHẬP MÔN CHƯƠNG TRÌNH DỊCH
CHƯƠNG 2 PHÂN TÍCH TỪ VỰNG
CHƯƠNG 3 CÁC VẤN ĐỀ CƠ BẢN VỀ PHÂN TÍCH CÚ PHÁP CHƯƠNG 4 CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
CHƯƠNG 5 PHÂN TÍCH NGỮ NGHĨA
CHƯƠNG 6 XỬ LÝ LỖI VÀ SINH MÃ
Trang 4Giáo trình Kiến trúc máy tính và Hệ 4
1 Các khái niệm cơ bản
2 Đặc trưng của ngôn ngữ lập trình (NNLT) bậc cao
3 Các qui tắc từ vựng và cú pháp
4 Các chức năng của một trình biên dịch
Chương 2
Trang 5Giáo trình Kiến trúc máy tính và Hệ 5
1.1 Sự phát triển của ngôn ngữ lập trình
1.2 Khái niệm chương trình dịch
1.3 Phân loại chương trình dịch
1.4 Các ứng dụng khác của kỹ thuật dịch
Chương 2
Trang 6Giáo trình Kiến trúc máy tính và Hệ 6
1.1 Sự phát triển của ngôn ngữ lập trình
NNLT bậc cao (Higher _level language)
Trang 7Giáo trình Kiến trúc máy tính và Hệ 7
1.2 Khái niệm chương trình dịch
Chương trình dịch là chương trình dùng để dịch một chương trình (CT nguồn) viết trên NNLT nào đó (NN nguồn) sang một chương trình tương đương (CT đích) trên một NN khác (NN đích)
Chương 2
Trang 8Giáo trình Kiến trúc máy tính và Hệ 8
1.3 Phân loại chương trình dịch
CT nguồn Trình biên
dịch CT đích
Máy tính thực thi Kết quả
Thời gian dịch
Dữ liệu
Thời gian thực thi
Trang 9Giáo trình Kiến trúc máy tính và Hệ 9
1.3 Phân loại chương trình dịch
CT nguồn Trình thông dịch Kết quả
Dữ liệu
Trang 10Giáo trình Kiến trúc máy tính và Hệ 10
1.4 Các ứng dụng khác của kỹ thuật dịch
người và máy thông qua các câu lệnh.
tóm tắt văn bản.
Chương 2
Trang 11Giáo trình Kiến trúc máy tính và Hệ 11
Trang 12Giáo trình Kiến trúc máy tính và Hệ điều hành
chữ cái của các NN là khác nhau.
+ 52 chữ cái: A Z, az
+ 10 chữ số: 0 9
+ Các ký hiệu khác:*, /, +, -, …
Trang 13Giáo trình Kiến trúc máy tính và Hệ 13
3.2 Từ tố (Token)
Chương 2
Trang 14Giáo trình Kiến trúc máy tính và Hệ 14
3.3 Phạm trù cú pháp
theo một qui luật nào đó
+ BNF(Backus Naus Form):
<lệnhgán>::=<tên biến>:=<biểu thức>
Trang 15Giáo trình Kiến trúc máy tính và Hệ điều hành
nghĩa được khái niệm chương trình đến mức
độ tự có
Trang 16Giáo trình Kiến trúc máy tính và Hệ 16
3.4 Các qui tắc từ vựng thông dụng
tab(‘\t’), dấu sang dòng(‘\n’)
khoảng trống thay vì một khoảng trống
Trang 17Giáo trình Kiến trúc máy tính và Hệ 17
phép toán, tên biến và các phép toán
Ví dụ: x:=x+3*3;
Trang 18Giáo trình Kiến trúc máy tính và Hệ 18
Trang 19Giáo trình Kiến trúc máy tính và Hệ 19
Trang 20Giáo trình Kiến trúc máy tính và Hệ 20
4.2 Phân tích cú pháp
qui tắc nào đó.
cú pháp của ngôn ngữ không
Trang 21Giáo trình Kiến trúc máy tính và Hệ 21
Trang 22Giáo trình Kiến trúc máy tính và Hệ 22
4.4 Xử lý lỗi
Trang 23Giáo trình Kiến trúc máy tính và Hệ 23
4.4 Xử lý lỗi
chưa khai báo)
Trang 24Giáo trình Kiến trúc máy tính và Hệ 24
4.5 sinh mã trung gian
nguồn có 2 đặc điểm:
Trang 25Giáo trình Kiến trúc máy tính và Hệ 25
4.6 Tối ưu mã trung gian
tượng thì thời gian thực thi mã đối tượng sẽ ngắn hơn
Trang 26Giáo trình Kiến trúc máy tính và Hệ điều hành
26
4.7 Sinh mã đối tượng
một ngôn ngữ khác ngôn ngữ nguồn.
trung gian của CT nguồn, sau đó ghi kết quả để lượt sau đọc và xử lý tiếp.
Trang 27Giáo trình Kiến trúc máy tính và Hệ điều hành
27
V í dụ:
a:=(b+c)*6 5
Bộ PTTV id1:=(id2+id3)*Num4
Bộ PTCP n1 id1 := n2
* n3
id2
Num4 id3
+
Bộ PTNN n1 id1 := n2
* n3
id2
Intoreal(65) id3
+
Bộ sinh mã trung gian
Temp1:=intoreal(65) Temp2:=id2+id3 Temp3:=temp2*temp1 Id1:=temp3
Bộ tối ưu sinh mã trung gian
Temp1:=id2+id3 Id1:=temp1*65.0
Bộ sinh mã đối tượng
MovF id2, R1 MovF id3, R2 Add R2, R1 Mult #65.0, R1
Trang 28Giáo trình Kiến trúc máy tính và Hệ 28
Trang 29Giáo trình Kiến trúc máy tính và Hệ 29
từ tố.
vựng dãy các token phân tích cú pháp.
với phân tích cú pháp Một lần chỉ phát hiện 1 token gọi là từ tố tiếp đến
Trang 30Giáo trình Kiến trúc máy tính và Hệ điều hành
30
thành token đến khi gặp ký tự không thể kết hợp thành token.
(văn bản, mã phân loại) vừa phát hiện cho
bộ phân tích cú pháp.
Trang 31Giáo trình Kiến trúc máy tính và Hệ 31
từ vựng
Gửi token Bộ
phân tích
cú pháp Yêu cầu token
Bảng danh biểu
Trang 32Giáo trình Kiến trúc máy tính và Hệ điều hành
32
3.1 Định nghĩa: M(Σ, Q, δ, q0, F)
Σ: bộ chữ vào Q: tập hữu hạn các trạng thái
Trang 33Giáo trình Kiến trúc máy tính và Hệ 33
3.2 Biểu diễn các hàm chuyển trạng thái
sao cho δ(q,a)=p
Trang 34Giáo trình Kiến trúc máy tính và Hệ 34
3.2 Biểu diễn các hàm chuyển trạng thái
Trang 35Giáo trình Kiến trúc máy tính và Hệ điều hành
35
3.2 Biểu diễn các hàm chuyển trạng thái
tròn.
tròn kép.
Trang 36Giáo trình Kiến trúc máy tính và Hệ 36
3.2 Biểu diễn các hàm chuyển trạng thái
Trang 37Giáo trình Kiến trúc máy tính và Hệ điều hành
37
3.2 Biểu diễn các hàm chuyển trạng thái
hình vẽ có ưu điểm hơn Trong hình vẽ ta xác định đầy đủ tất cả các thành phần của Otomat.
chuyển trạng thái, tập các trạng thái, bộ chữ vào nhưng không phân biệt được trạng thái bắt đầu và trạng thái kết thúc.
Trang 38Giáo trình Kiến trúc máy tính và Hệ 38
3.3 Hoạt động của Otomat
bắt đầu từ trạng thái q0.
trạng thái theo δ Có thể đọc xong hay không đọc xong xâu vào.
Trang 39Giáo trình Kiến trúc máy tính và Hệ 39
3.3 Hoạt động của Otomat
thì xâu vào được đoán nhận (xâu đúng).
thì xâu vào không được đoán nhận.
không xác định) thì xâu vào không được
đoán nhận.
Trang 40Giáo trình Kiến trúc máy tính và Hệ 40
3.4 Ví dụ: Xác định Otomat đoán nhận số nhị phân M(Σ, Q, δ, q0, F)
Trang 41Giáo trình Kiến trúc máy tính và Hệ 41
3.4 Ví dụ: Xác định Otomat đoán nhận số nhị phân
Trang 42Giáo trình Kiến trúc máy tính và Hệ 42
Trang 43Giáo trình Kiến trúc máy tính và Hệ 43
Trang 44Giáo trình Kiến trúc máy tính và Hệ điều hành
Procedure Dockytu(var c:char);
…{Đọc ký tự tiếp, ký tự này luôn luôn được
đọc trước}
Function LoaiKT(c:char):Loaikytu;
…{Cho biết loại của ký tự c}
Procedure Baoloi;
…{Cho một thông báo lỗi}
Procedure Tuvung(var ma:Loaituto;var x:xau); Var i:0 max;
Begin For i:=1 to max do x[i]:=’’;
I:=0;
While loaikytu(kytutiep)=trang do
Dockytu(kytutiep);
Case loaikytu(kytutiep) of Conso: Begin
Repeat I:=i+1;
x[i]:=kytutiep;
Dockytu(kytutiep);
Until Loaikytu(kytutiep)<>conso;
Trang 45Giáo trình Kiến trúc máy tính và Hệ điều hành
Ccai: begin Repeat
If i<max then Begin I:=i+1;
Trang 46Giáo trình Kiến trúc máy tính và Hệ 46
4.1 Phương pháp điều khiển bằng bảng
Var bangchuyen: array[1 6,loaikytu] of 0 6;
Mảng này được nạp dữ liệu như sau:
trang Conso Cham Ttu Ccai
Trang 47Giáo trình Kiến trúc máy tính và Hệ điều hành
47
4.1 Phương pháp điều khiển bằng bảng
Procedure Tuvung(var ma:loaituto; var x:xau);
Trang 48Giáo trình Kiến trúc máy tính và Hệ 48
Gồm các token và các thuộc tính của token
Chỉ số Token Trị từ vựng Các thuộc tính khác 01
Trang 49Giáo trình Kiến trúc máy tính và Hệ 49
danh sách móc nối
Trang 50Giáo trình Kiến trúc máy tính và Hệ 50
Trang 51Giáo trình Kiến trúc máy tính và Hệ 51
Trang 52Giáo trình Kiến trúc máy tính và Hệ điều hành
Ký hiệu: độ dài xâu x là |x|
Trang 53Giáo trình Kiến trúc máy tính và Hệ 53
Trang 54Giáo trình Kiến trúc máy tính và Hệ 54
1 Một số vấn đề về ngôn ngữ
1.1 Xâu
là x.y hay xy là 1 xâu viết x trước, rồi đến y sau chứ không có dấu cách.
y=0110 xy=010110
Trang 55Giáo trình Kiến trúc máy tính và Hệ 55
1 Một số vấn đề về ngôn ngữ
1.1 Xâu
tự ngược lại của xâu x
Trang 56Giáo trình Kiến trúc máy tính và Hệ 56
1 Một số vấn đề về ngôn ngữ
1.2 Ngôn ngữ
Trang 57Giáo trình Kiến trúc máy tính và Hệ 57
Trang 58Giáo trình Kiến trúc máy tính và Hệ 58
1 Một số vấn đề về ngôn ngữ
1.3 Biểu diễn ngôn ngữ
hữu hạn và có thể xác định được.
Ví dụ: ngôn ngữ là các số tự nhiên nhỏ hơn
20 và lớn hơn 12
L={13, 14, 15, 16, 17, 18, 19}
Trang 59Giáo trình Kiến trúc máy tính và Hệ điều hành
59
1 Một số vấn đề về ngôn ngữ
1.3 Biểu diễn ngôn ngữ
Trang 60Giáo trình Kiến trúc máy tính và Hệ 60
Trang 61Giáo trình Kiến trúc máy tính và Hệ 61
Trang 62Giáo trình Kiến trúc máy tính và Hệ 62
2 Văn phạm phi ngữ cảnh
xuất đầu tiên là ký hiệu bắt đầu.
Trang 63Giáo trình Kiến trúc máy tính và Hệ 63
2 Văn phạm phi ngữ cảnh
Trang 64Giáo trình Kiến trúc máy tính và Hệ 64
Trang 65Giáo trình Kiến trúc máy tính và Hệ 65
2 Văn phạm phi ngữ cảnh
Trang 66Giáo trình Kiến trúc máy tính và Hệ 66
2 Văn phạm phi ngữ cảnh
ở bên trái nhất gọi là suy dẫn trái Tương tự
ta có suy dẫn phải
Trang 67Giáo trình Kiến trúc máy tính và Hệ điều hành
67
2 Văn phạm phi ngữ cảnh
chưa kết thúc
từ trái sang phải có nhãn x1, x2, x3, …xn thì
Trang 68Giáo trình Kiến trúc máy tính và Hệ 68
2 Văn phạm phi ngữ cảnh
EE+E | E*E | (E) | a
Vẽ cây suy dẫn trái, phải sinh xâu: a+a*a
(1) (2) (3) (4)
Trang 69Giáo trình Kiến trúc máy tính và Hệ 69
2 Văn phạm phi ngữ cảnh
Văn phạm G=(Σ, Δ, s, p) sản sinh ra ngôn
đơn nghĩa (không nhập nhằng) nếu với mỗi
nhất, trái lại thì G là văn phạm nhập nhằng.
Trang 70Giáo trình Kiến trúc máy tính và Hệ 70
2 Văn phạm phi ngữ cảnh
Văn phạm G1 và G2 được gọi là tương
thì G2 cũng sinh ra được và ngược lại
Trang 71Giáo trình Kiến trúc máy tính và Hệ 71
2 Văn phạm phi ngữ cảnh
Trang 72Giáo trình Kiến trúc máy tính và Hệ 72
Trang 73Giáo trình Kiến trúc máy tính và Hệ 73
Trang 74Giáo trình Kiến trúc máy tính và Hệ 74
Trang 75Giáo trình Kiến trúc máy tính và Hệ 75
3 Đại cương về phân tích cú pháp
Trang 76Giáo trình Kiến trúc máy tính và Hệ 76
3 Đại cương về phân tích cú pháp
3.2 Phương pháp giải quyết
Trang 77Giáo trình Kiến trúc máy tính và Hệ 77
3 Đại cương về phân tích cú pháp
3.2 Phương pháp giải quyết
sản xuất để thu S: PTCP từ dưới lên
phạm G
của văn phạm G
Trang 78Giáo trình Kiến trúc máy tính và Hệ điều hành
78
3 Đại cương về phân tích cú pháp
3.2 Phương pháp giải quyết
Ví dụ: Cho văn phạm PNC G sau:
SB BR | (B) R E=E E a | b | (E+E) Xâu x: (a=(b+a))
Hỏi xâu x có viết đúng cú pháp của G k0?
(1) (2) (3) (4) (5) (6) (7)
Trang 79Giáo trình Kiến trúc máy tính và Hệ 79
3 Đại cương về phân tích cú pháp
3.2 Phương pháp giải quyết
Trang 80Giáo trình Kiến trúc máy tính và Hệ 80
3 Đại cương về phân tích cú pháp
3.2 Phương pháp giải quyết
Trang 81Giáo trình Kiến trúc máy tính và Hệ điều hành
81
3 Đại cương về phân tích cú pháp
3.2 Phương pháp giải quyết
Ví dụ:
Vậy xâu x viết đúng cú pháp của G
Trang 82Giáo trình Kiến trúc máy tính và Hệ điều hành
82
3 Đại cương về phân tích cú pháp
3.3 Sơ đồ chung giải thuật PTCP từ dưới lên
Trang 83Giáo trình Kiến trúc máy tính và Hệ điều hành
83
3 Đại cương về phân tích cú pháp
3.3 Sơ đồ chung giải thuật PTCP từ dưới lên
Trang 84Giáo trình Kiến trúc máy tính và Hệ 84
3 Đại cương về phân tích cú pháp
3.3 Sơ đồ chung giải thuật PTCP từ dưới lên
Else
Trang 85
Giáo trình Kiến trúc máy tính và Hệ điều hành
85
3 Đại cương về phân tích cú pháp
3.3 Sơ đồ chung giải thuật PTCP từ dưới lên
Else
If (Buffer<>$) Then D/c k/h ở đỉnh của Buffer Stack Else
-Báo lỗi x không đúng cú pháp VP G -Dừng vòng lặp
Trang 86Giáo trình Kiến trúc máy tính và Hệ 86
3 Đại cương về phân tích cú pháp
3.3 Sơ đồ chung giải thuật PTCP từ dưới lên
DK true | false
L write(ID) | read(ID)
ID a | b Xâu x: if true then read(a); có đúng cú pháp
vp trên?
Trang 87Giáo trình Kiến trúc máy tính và Hệ 87
(0) $ if true then read(a); $ D/c
(2) $if true then read(a);$ R/g DKtrue
3 Đại cương về phân tích cú pháp
3.3 Sơ đồ chung giải thuật PTCP từ dưới lên
Trang 88Giáo trình Kiến trúc máy tính và Hệ 88
(7) $if DK then read(a );$ R/g IDa
(9) $if DK then read(ID) ;$ R/g Lread(ID)
3 Đại cương về phân tích cú pháp
3.3 Sơ đồ chung giải thuật PTCP từ dưới lên
Trang 89Giáo trình Kiến trúc máy tính và Hệ 89
(11) $if DK then L; $ R/g Sif DK then L;
3 Đại cương về phân tích cú pháp
3.3 Sơ đồ chung giải thuật PTCP từ dưới lên
Trang 90Giáo trình Kiến trúc máy tính và Hệ điều hành
90
3 Đại cương về phân tích cú pháp
3.4 Sơ đồ chung giải thuật PTCP từ trên xuống
Trang 91Giáo trình Kiến trúc máy tính và Hệ 91
3 Đại cương về phân tích cú pháp
3.4 Sơ đồ chung giải thuật PTCP từ trên xuống
Trang 92Giáo trình Kiến trúc máy tính và Hệ 92
3 Đại cương về phân tích cú pháp
3.4 Sơ đồ chung giải thuật PTCP từ trên xuống
- Dừng vòng lặp Else
Trang 93Giáo trình Kiến trúc máy tính và Hệ 93
3 Đại cương về phân tích cú pháp
3.4 Sơ đồ chung giải thuật PTCP từ trên xuống
Trang 94Giáo trình Kiến trúc máy tính và Hệ 94
3 Đại cương về phân tích cú pháp
3.4 Sơ đồ chung giải thuật PTCP từ trên xuống
Else
- Báo lỗi x không đúng cú pháp của G
- Dừng vòng lặp
Trang 95Giáo trình Kiến trúc máy tính và Hệ 95
3 Đại cương về phân tích cú pháp
3.4 Sơ đồ chung giải thuật PTCP từ trên xuống
AbA | c Xâu x: abbc có đúng cú pháp của VP trên ?
Trang 96Giáo trình Kiến trúc máy tính và Hệ 96
3 Đại cương về phân tích cú pháp
3.4 Sơ đồ chung giải thuật PTCP từ trên xuống
Trang 97Giáo trình Kiến trúc máy tính và Hệ 97
3 Đại cương về phân tích cú pháp
3.4 Sơ đồ chung giải thuật PTCP từ trên xuống
Trang 98Giáo trình Kiến trúc máy tính và Hệ điều hành
Xâu x có đúng cp của G? ch/m?
Trang 99Giáo trình Kiến trúc máy tính và Hệ 99
3 Đại cương về phân tích cú pháp
Bài tập:
A cA | bA | d Xâu x: abbcbd
Xâu x có đúng cp của G? ch/m?
Trang 100Giáo trình Kiến trúc máy tính và Hệ 100
4 Các phương pháp phân tích cú pháp
4.1 Từ trên xuống
Trang 101Giáo trình Kiến trúc máy tính và Hệ 101
Trang 102Giáo trình Kiến trúc máy tính và Hệ 102
1 Phương pháp phân tích cú pháp dưới lên
1.1 Phương pháp ưu tiên toán tử
Văn phạm phi ngữ cảnh thỏa mãn các ĐK:
nhau
Trang 103Giáo trình Kiến trúc máy tính và Hệ 103
1 Phương pháp phân tích cú pháp dưới lên
1.1 Phương pháp ưu tiên toán tử
⋅
⋅
⋅
Trang 104Giáo trình Kiến trúc máy tính và Hệ 104
1 Phương pháp phân tích cú pháp dưới lên
1.1 Phương pháp ưu tiên toán tử
Trang 105Giáo trình Kiến trúc máy tính và Hệ 105
1 Phương pháp phân tích cú pháp dưới lên
1.1 Phương pháp ưu tiên toán tử
(Không có T/c bắc cầu)
Trang 106Giáo trình Kiến trúc máy tính và Hệ điều hành
106
1 Phương pháp phân tích cú pháp dưới lên
1.1 Phương pháp ưu tiên toán tử
Trang 107Giáo trình Kiến trúc máy tính và Hệ điều hành
107
1 Phương pháp phân tích cú pháp dưới lên
1.1 Phương pháp ưu tiên toán tử
nhất là a và buffer là b}
If (a>b) Then
.
.
Trang 108Giáo trình Kiến trúc máy tính và Hệ điều hành
108
1 Phương pháp phân tích cú pháp dưới lên
1.1 Phương pháp ưu tiên toán tử
Else
If (a<b) or (a=b)Then D/c b từ Buffer Stack Else
- Báo lỗi x không đúng cú pháp G
- Dừng vòng lặp
Trang 109Giáo trình Kiến trúc máy tính và Hệ 109
1 Phương pháp phân tích cú pháp dưới lên
1.1 Phương pháp ưu tiên toán tử
DK true | false
L write(ID) | read(ID)
ID a | b Xâu x: if true then read(a); có đúng cú pháp
vp trên?
Trang 110Giáo trình Kiến trúc máy tính và Hệ 110
1 Phương pháp phân tích cú pháp dưới lên
1.1 Phương pháp ưu tiên toán tử
Xét vế phải của từng sản xuất
Trang 111Giáo trình Kiến trúc máy tính và Hệ điều hành
Trang 112Giáo trình Kiến trúc máy tính và Hệ 112
1 Phương pháp phân tích cú pháp dưới lên
1.1 Phương pháp ưu tiên toán tử
Trang 113Giáo trình Kiến trúc máy tính và Hệ điều hành
( < a | b (qt2)
a |b > ) (qt3)
.
.
.
Trang 114Giáo trình Kiến trúc máy tính và Hệ 114
1 Phương pháp phân tích cú pháp dưới lên
1.1 Phương pháp ưu tiên toán tử
Trang 115Giáo trình Kiến trúc máy tính và Hệ 115
1 Phương pháp phân tích cú pháp dưới lên
1.1 Phương pháp ưu tiên toán tử
.
< .
Trang 116Giáo trình Kiến trúc máy tính và Hệ 116
1 Phương pháp phân tích cú pháp dưới lên
1.1 Phương pháp ưu tiên toán tử
.
.
< .
Trang 117Giáo trình Kiến trúc máy tính và Hệ 117
1 Phương pháp phân tích cú pháp dưới lên
1.1 Phương pháp ưu tiên toán tử
.
.
< .
< .
Trang 118Giáo trình Kiến trúc máy tính và Hệ điều hành
Trang 119Giáo trình Kiến trúc máy tính và Hệ điều hành
119
1.1 Phương pháp ưu tiên toán tử
Bài tập:
N 5
Xâu x: const a=5; type b=byte; var c:real;
Trang 120Giáo trình Kiến trúc máy tính và Hệ điều hành
120
1 Phương pháp phân tích cú pháp dưới lên
1.1 Phương pháp ưu tiên toán tử
Bài tập:
.