... dụng EditPlus để biêndịch chương trình C++
1. Cài đặt Turbo C++3.0
• Thư mục cài đặt: giả sử là D:\TC30
• Các thư mục quan trọng cần lưu ý:
o Bin: chứa các chương trìnhbiên dịch, link, tạo ... tạo project.
o Lib: chứa thư viện hàm (đã dịch)
o Include: chứa các khai báo thư viện hàm
2. Cấu hình TurboC++ 3.0 để có thể biêndịch 1 chương trình viết bằng ngôn ngữ C++
trong cơ chế ...
• Chỉnh sửa nội dung file TURBOC.cfg trong thư mục Bin (nếu không có thì tự tạo):
• Thử biêndịch trong cơ chế dòng lệnh: nếu có kết quả như hình dưới đây là đã cấu hình
thành công.
...
... TrìnhBiênDịch là chương trình chịu trách
nhiệm dịch một mã văn bản chương trình
nguồn của một ngôn ngữ lập trình ra mã
máy.
•
Trìnhbiêndịch có thể được chia thành hai
loại : BiênDịch ... Khái Quát Chương Trình
Trìnhbiêndịch được xây dựng là một trình
thông dịch. khi chương trình thực thi, toàn bộ
văn bản chương trình nguồn được nạp vào bộ
nhớ. Trìnhbiêndịch phân biệt chữ ... Về TrìnhBiên Dịch
Bộ Phân Tích Từ Vựng
Bộ Phân Tích Cú Pháp
Bộ Xử Lý Ngữ Nghĩa
Giới Thiệu Ngôn Ngữ
17/05/2006 4
Ch ng 1ươ : Tổng Quan Về TrìnhBiên
Dịch
1. Giới thiệu về TrìnhBiên Dịch
•
Trình...
... làm hai loại: trìnhbiêndịch (compiler) và trình
thông dịch (interpreter).
− Trìnhbiên dịch: chuyển một chương trình viết trong ngôn ngữ cấp cao − chương
trình nguồn sang chương trình trong ... Hiện nay trình thông dịch đa phần áp dụng kỹ thuật của trìnhbiêndịch là
biên dịch chương trình nguồ
n sang dạng mã trung gian. Từ mã trung gian sẽ được
thực thi bằng trình thông dịch.
Đặc ... đoạn
đầu của trìnhbiêndịch kết nối với các phần sau để tạo ra một trìnhbiêndịch cho
cùng một ngôn ngữ nguồn trên các máy khác nhau. Hoặc ngược lại, có thể các
trình biêndịch cho nhiều...
... ten cho file lập trình : ví dụ ở đây tui chọn là
lednhay.asm rồi chọn open
TRÌNH BIÊNDỊCH TRONG PROTUES
Trong isi (proteus) có sẵn trìnhbiêndich để chúng ta viết code lập trình vào ,có thể ...
CODE LẬP TRÌNH VÍ DỤ NHƯ SAU : (THEO CÁCH SANG CỦA TÔI ,CÒN CÁC
BẠN THÍCH SÁNG THEO KIỂU NÀO LÀ DO MÌNH LẬP TRÌNH THUI ,HJHJ )
Lập trình rất dễ :
ORG 0000H
BATDAU:
MOV ... lập trình bằng asm
Phần cứng thiết kế không khó ,
2 .Phần lập trình :
Lại vào source ,ta thấy có file lednhay.asm ở phia dưới (nó là một dạng notpade) chúng ta
kich vào nó và bắt đầu lập trình...
... chương trình.
Trình biên
dịch
Chương trình
đích
Chương trình
nguồn
Hình 1.1 - Một trìnhbiêndịch
1. Mô hình phân tích - tổng hợp của một trìnhbiêndịch
Chương trìnhdịch thường ... - Một trình xử lý ngôn ngữ điển hình
Chương trình nguồn khung
Chương trình nguồn
Bộ tiền xử lý
Trình biêndịch
Trình dịch hợp ngữ
Chương trìnhđích hợp ngữ
Mã máy khả tái định vị
Trình ... thành phần của một trìnhbiên dịch, mối liên hệ giữa các thành phần đó và
môi trường nơi trìnhbiêndịch thực hiện công việc của nó.
Tài liệu tham khảo:
[1] TrìnhBiênDịch - Phan Thị Tươi...
... chương trình.
Trình biên
dịch
Chương trình
đích
Chương trình
nguồn
Hình 1.1 - Một trìnhbiêndịch
1. Mô hình phân tích - tổng hợp của một trìnhbiêndịch
Chương trìnhdịch thường ... thành phần của một trìnhbiên dịch, mối liên hệ giữa các thành phần đó và
môi trường nơi trìnhbiêndịch thực hiện công việc của nó.
Tài liệu tham khảo:
[1] TrìnhBiênDịch - Phan Thị Tươi ...
I. TRÌNHBIÊNDỊCH
Nói một cách đơn giản, trìnhbiêndịch là một chương trình làm nhiệm vụ đọc một
chương trình được viết bằng một ngôn ngữ - ngôn ngữ nguồn (source language) - rồi
dịch...
... hành động dịch biểu thức 9-5+2 thành 9 5- 2 +
18
II. DỊCH TRỰC TIẾP CÚ PHÁP (Syntax - Directed Translation)
Ðể dịch một kết cấu ngôn ngữ lập trình, trong quá trình dịch, bộ biêndịch cần ... một thuật ngữ có tính thủ
tục hơn là lược đồ dịch (translation scheme) để đặc tả quá trình dịch. Trong chương
này, ta sử dụng lược đồ dịch để dịch một biểu thức trung tố thành dạng hậu tố. ... pháp, mặc dù một trìnhbiên
dịch có thể không xây dựng một cây như thế. Tuy nhiên, quá trình phân tích cú pháp
(parse) phải có khả năng xây dựng nó, nếu không thì việc phiên dịch sẽ không bảo...
...
Bởi vì một chuỗi với nhiều cây phân tích cú pháp thường sẽ có nhiều nghĩa, do
đó khi biêndịch các chương trình ứng dụng, chúng ta cần thiết kế các văn phạm không
có sự mơ hồ hoặc cần bổ sung...
... ; putchar (‘-’) ;
}
else break;
}
Chương trình C dịch biểu thức trung tố sang hậu tố
Chương trình nguồn C hoàn chỉnh cho chương trìnhdịch có mã như sau :
# include< ctype.h> /* ... tin này được tập hợp từ
các giai đoạn phân tích của trìnhbiêndịch và được sử dụng bởi giai đoạn tổng hợp để
sinh mã đích. Ví dụ trong quá trình phân tích từ vựng, các chuỗi ký tự tạo ra một ... việc ghi nhận
lỗi bởi vì cần phải chỉ ra vị trí lỗi trong đoạn chương trình.
Ðể tránh việc phải quay lui, một số trìnhbiêndịch sử dụng cơ chế đọc trước một
ký tự rồi mới gọi đến bộ phân tích...
... +1)
4. Dịch các biểu thức
Ðoạn mã chương trình dùng để ước lượng một biểu thức trên một máy ảo kiểu
Stack có liên quan mật thiết với ký pháp hậu tố cho biểu thức đó.
Ví dụ 2.16: Dịch phép ... (abstact stack
machine - ASM).
Trong phần này, chúng ta sẽ trình bày khái quát về một máy ảo kiểu Stack và chỉ
ra cách sinh mã chương trình cho nó. Máy ảo này bao gồm 3 thành phần:
1. Vùng nhớ ... khác 0 thì nhảy đến l,
ngược lại, thực hiện lệnh kế tiếp.
halt : Ngưng thực hiện chương trình.
6. Dịch các câu lệnh
Sơ đồ phác thảo đoạn mã máy ảo cho một số lệnh cấu trúc được chỉ ra trong...
... mẫu (pattern). Trước tiên, người thiết kế trìnhbiêndịch phải mô tả các
mẫu được xác định bằng các biểu thức chính quy, sau đó sử dụng trìnhbiêndịch của
Lex để tự động tạo ra một bộ định ... loại bỏ.
2. Hiệu quả của trìnhbiêndịch cũng sẽ được cải thiện, nhờ vào một số chương
trình xử lý chuyên dụng sẽ làm giảm đáng kể thời gian đọc dữ liệu từ chương trình
nguồn và nhóm các token. ... các lược đồ cho các biểu thức chính quy mô tả ngôn ngữ cần được
viết trìnhbiên dịch. Sau đó chuyển đổi chúng sang một chương trình phân tích
từ vựng.
• Sử dụng công cụ có sẵn Lex để sinh ra...
... cách tạo ra một
chương trình lex.l trong ngôn ngữ lex. Trìnhbiêndịch Lex sẽ dịch lex.l thành một
chương trình C là lex.yy.c. Chương trình này bao gồm các đặc tả về sơ đồ dịch được
xây dựng từ ... biểu thức chính quy trong lex.l là các đoạn
chương trình C được chuyển sang lex.yy.c. Cuối cùng trìnhbiêndịch C sẽ dịch
lex.yy.c thành chương trình đối tượng a.out, đó là bộ phân tích từ vựng ... một chương trình Lex sao chép một tập tin, thay các chuỗi khoảng trắng
thành một khoảng trắng duy nhất.
3.4. Viết một đặc tả Lex cho các token của ngôn ngữ Pascal và dùng trìnhbiêndịch
Lex...
... đệ quy trái và mơ hồ. Phần lớn nội dung của
chương trình bày các phương pháp phân tích cú pháp thường được sử dụng trong các
trình biên dịch: Phân tích cú pháp từ trên xuống (Top down) và Phân ...
dưới lên (Bottom up). Các chương trình nguồn có thể chứa các lỗi cú pháp. Trong quá
trình phân tích cú pháp chương trình nguồn, sẽ rất bất tiện nếu chương trình dừng và
thông báo lỗi khi gặp ... hiệu
Hình 4.1 - Vị trí của bộ phân tích cú pháp trong mô hình trìnhbiêndịch
2. Xử lý lỗi cú pháp
Chương trình nguồn có thể chứa các lỗi ở nhiều mức độ khác nhau:
- Lỗi từ vựng...
... phạm trở thành khó đọc và khó dùng cho các mục đíchbiên
dịch.
6. Phục hồi lỗi trong phân tích dự đoán
Một lỗi sẽ được tìm thấy trong quá trình phân tích dự đoán khi:
1. Ký hiệu kết thúc trên ... cạnh có nhãn X
1
X
2
X
n
Một cách cụ thể, sơ đồ dịch được vẽ theo các nguyên tắc sau:
1. Mỗi ký hiệu chưa kết thúc tương ứng với một sơ đồ dịch trong đó nhãn
cho các cạnh là token hoặc ký ... sinh có dạng A → α
1
| α
2
| | α
n
tương ứng với sơ đồ dịch
5. Mỗi luật sinh dạng A → α
1
α
2
α
n
tương ứng với sơ đồ dịch
Ví dụ 4.5: Xét văn phạm sinh biểu thức toán học...