Professional Documents
Culture Documents
IT4079 One
IT4079 One
2/20/24 2
1. Ngôn ngữ lập trình cấp cao và trình dịch
Ngôn ngữ
bậc cao
– Độc lập với máy
– Gần với ngữ tự nhiên
2/20/24
• Ví dụ: C, Pascal, basic.. 3
1. Ngôn ngữ lập trình cấp cao và trình dịch
Phase
compiler loader
dịch
Mã đối Mã thực
linker
tượng hiện
Thư viện
2/20/24 6
1. Ngôn ngữ lập trình cấp cao và trình dịch
Phase 1: Chuyển từ
compiler
chương trình nguồn
sang NN trung gian
Chương trình bằng
ngôn ngữ trung gian
Phase 2: Thực hiện
mã trung gian
interpreter
Kết quả
2/20/24 8
1. Ngôn ngữ lập trình cấp cao và trình dịch
2/20/24 9
1. Ngôn ngữ lập trình cấp cao và trình dịch
T-Diagram
• Chương dịch được đặc trung bởi (TIS®T)
– Ngôn ngữ nguồn được dịch S (input)
– Ngôn ngữ đích T (output)
S T
– Ngôn ngữ cài đặt I (Đã tồn tại)
I
• Có thể là ngôn ngữ máy
Ada Mac
C++
C++ Sun
PC
2/20/24 10
1. Ngôn ngữ lập trình cấp cao và trình dịch
T-Diagram
• M là máy tính, có ngôn ngữ máy M
• TMS®T : Chương trình dịch trên M, dịch từ S®T
– Input: Chương trình viết bằng ngôn ngữ S
– Output: Chương trình viết bằng ngôn ngữ T
Input S T Output
X Y M X Y
S
M
T
2/20/24 11
1. Ngôn ngữ lập trình cấp cao và trình dịch
2/20/24 12
1. Ngôn ngữ lập trình cấp cao và trình dịch
2/20/24 15
1. Ngôn ngữ lập trình cấp cao và trình dịch
Ada PC Ada PC
Java ? Sun
Mac
2/20/24 16
Chương 1: Những khái niệm cơ bản
2/20/24 17
2. Đặc trưng của ngôn ngữ lập trình cấp cao
2/20/24 18
2. Đặc trưng của ngôn ngữ lập trình cấp cao
1. Từ vựng và cú pháp
2. Kiểu dữ liệu
3. Các đại lượng
4. Các toán tử và biểu thức
5. Các câu lệnh
6. Chương trình con
2/20/24 21
2. Đặc trưng của ngôn ngữ lập trình cấp cao
Từ vựng và cú pháp
v Từ vựng
– Chữ cái: A..Z, a..z
– Chứ sô: 0..9
– Dấu: dấu chức năng, dấu toán tử
• Dấu đơn: +, -, ; {, }
• Dấu kép: >=, <=, /*, */
– Từ khóa : từ dành riêng cho ngôn ngữ
• Được dùng để khai báo, ra lệnh cho chương trình
v Cú pháp
– Là các quy tắc để
• Viết ra các đại lượng
• Viết các câu lệnh
2/20/24 22
2. Đặc trưng của ngôn ngữ lập trình cấp cao
Kiểu dữ liệu
v Các kiểu cơ bản
– Kiểu số nguyên int Interger
– Kiểu số thực float Real
– Kiểu ký tự char Char
– Kiểu logic 0, 1 Boolean
v Kiểu dữ liệu có cấu trúc
– Kiểu mảng [] Array
– Kiểu chuỗi * String
– Kiểu bản ghi struct Record
– Kiểu con trỏ, & ^
–
2/20/24
Kiểu file FILE File 23
2. Đặc trưng của ngôn ngữ lập trình cấp cao
v Hằng
– Số nguyên
• Cách biểu diễn (decimal,octal, hexadecimal,..)
– Số thực
• Dấu phẩy tĩnh
• Dấu phẩy động
– Hằng chuỗi
• C: “Hello”
• Pascal: ‘Hello’
v Tên
– Nguyên tắc đặt tên ?
2/20/24
– Độ dài? 24
2. Đặc trưng của ngôn ngữ lập trình cấp cao
v Toán tử
– Số học: cộng (+), chia, chia dư(%, MOD),..
– Logic
• Quan hệ: bằng (=,==) khác (!=, <>), lớn hơn, (>),..
• Logic: Và (AND, &&), hoặc ( OR, ||),..
– Xâu: ghép xâu ¬Pascal
v Biểu thức ¬ Kết hợp các toán hạng bởi toán tử
– Số học: Trả về một con số
– Logic: Trả về một giá trị luận lý
– Xâu: Trả về một chuỗi ký hiệu
2/20/24 25
2. Đặc trưng của ngôn ngữ lập trình cấp cao
Nhận xét
2/20/24 28
2. Đặc trưng của ngôn ngữ lập trình cấp cao
2/20/24 30
3. Các giai đoạn chính của chương trình dịch
2/20/24 31
Cấu trúc chương trình dịch
Chương trình nguồn
Tối ưu mã
Sinh mã máy
Bảng ký hiệu
Bảng ký hiệu®Ví dụ
<ident> := <Expression>
10 size
2/20/24 41
3. Các giai đoạn chính của chương trình dịch
pos +
init *
10 size
2/20/24 42
3. Các giai đoạn chính của chương trình dịch
2/20/24 44
3. Các giai đoạn chính của chương trình dịch
Xử lý lỗi
Lỗi có thể gặp trong mọi pha của CTD
• Phân tích từ vựng
– Gặp ký tự lạ. Ví dụ: @, $,.. trong NNLT C
• Phân tích cú pháp
– Không tuân theo cú pháp: VD while (a <> b)
• Phân tích ngữ nghĩa
– Gán giá trị cho hằng, tính toán với tên thủ tục
• Sinh mã
– Kích thước quá lớn
Ví dụ: int Arr[1000][1000]; ® Lỗi tràn ô nhớ
2/20/24 49
3. Các giai đoạn chính của chương trình dịch
Xử lý lỗi
2/20/24 50
51
Quá trình dịch một câu lệnh
Position := Initial+Rate*60
[Phan Thị Tươi, 1998]
2/20/24
3. Các giai đoạn chính của chương trình dịch
Ghi chú
2/20/24 54
4. Khái niệm ngôn ngữ
Giới thiệu
2/20/24 60
4. Khái niệm ngôn ngữ
Bộ chữ
Xâu ký hiệu
Khái niệm
– Là dãy liên tiếp các ký hiệu của một bộ chữ
• Được gọi là xâu trên bộ chữ đó
• Thường được ký hiệu α, β, γ,..
– Xâu rỗng: xâu không chứa ký hiệu nào
• Thường được ký hiệu ε
Ví dụ
– α : Madam ® Xâu trên bảng chữ cái a, b, c,..
– β : Hôm_nay trời đẹp ® Xâu trong tiếng Việt
– γ : while (a > b) a = a – b; ® Xâu trong NNLT
2/20/24 66
4. Khái niệm ngôn ngữ
Xâu ký hiệu
• Độ dài xâu
– Số ký hiệu trong xâu đó
– Thường được ký hiệu |α| hay l(α)
– Ví dụ: l(α) = 5 l(β)= 3
l(γ) = 12 l(ε) = 0
• Đảo ngược xâu
– Đảo ngược xâu α, (ký hiệu là αR)
• Viết các ký hiệu của xâu α theo chiều ngược lại
• Xâu con
– Xâu v là xâu con của w nếu xâu v được tạo nên từ dãy
các ký hiệu liên tiếp của xâu w
• v là tiền tố w nếu v nằm ở đầu, nếu nằm ở cuối, v là hậu tố
2/20/24
• Ví dụ: ada là xâu con của xâu madam 67
4. Khái niệm ngôn ngữ
Xâu ký hiệu
• Ghép xâu
– Ghép 2 xâu α, β là việc viết các ký hiệu của xâu α rồi viết
tiếp các ký hiệu của xâu β
• Xâu lũy thừa:
– αn = α α… α (ghép n xâu α)
• Ví dụ: α: abc và β: ba
– αβ = abcba và βα = bacab
– α3 = abcabcabc
• Nhận xét:
– ab ¹ ba; ae º ea º a; ee º e;
– l(αβ) = l(α) + l(β)
2/20/24 68
4. Khái niệm ngôn ngữ
2/20/24 69
4. Khái niệm ngôn ngữ
2/20/24 70
4. Khái niệm ngôn ngữ
2/20/24 73
4. Khái niệm ngôn ngữ
Văn phạm ® Ví dụ
Suy dẫn
Suy dẫn ® Ví dụ
2/20/24 78
4. Khái niệm ngôn ngữ
Câu
2/20/24 79
4. Khái niệm ngôn ngữ
Câu ® Ví dụ
Ví dụ văn phạm G1
SÞaSA ÞabA Þabc
SÞaSA ÞabA ÞabbAÞabbc
SÞaSA ÞabA ÞabbA ÞabbbAÞabbbc
Dạng câu: aSA, abA, abc, abbA, abbc,…
Câu: abc, abbc, abbbc, abbbbc,…
2/20/24 80
4. Khái niệm ngôn ngữ
2/20/24 81
4. Khái niệm ngôn ngữ
Quy ước
Nếu A®α1
A®α2
…..
A®αn
Được viết gọn lại thành A®α1| α2| …| αn
Ví dụ:
G1=({a,b,c},{S,A},{S ®aSA|b, A ®bA|c},S)
G2= ({a,b}, {S,A}, {S ®aA, A ®a|b}, S)
2/20/24 82
4. Khái niệm ngôn ngữ
Ngôn ngữ®Ví dụ
Đệ quy
Cho văn phạm G = (VT, VN, P, S)
A ÎVN //¬ A là một ký hiệu không kết thúc
• A được gọi là đệ quy nếu tồn tại
AÞ+αAβ, với α, β ÎV*
• Nếu α=ε, (AÞ+Aβ) thì gọi là đệ quy trái
– Nếu AÞAβ: Đệ quy trái trực tiếp (Sản xuất: A ® Aβ)
• Nếu β =ε, (AÞ+ αA) thì gọi là đệ quy phải
– Nếu AÞ αA : Đệ quy phải trực tiếp (Sản xuất: A ® αA)
• Nếu α,β ¹ ε, (AÞ+ αAβ) thì gọi là đệ quy trong
– Nếu AÞ αAβ: Đệ quy trong trực tiếp (Sản xuất:A® αAβ)
Ví dụ, định nghĩa Tên
2/20/24
<Tên>®<Chữ cái>|<Tên><Chữ cái>|<Tên><Chữ số> 84
4. Khái niệm ngôn ngữ
2/20/24 85
4. Khái niệm ngôn ngữ
Được sử dụng
trong biểu diễn
cấu trúc từ vựng
1 2 3 4
2/20/24 88
5. Văn phạm phi ngữ cảnh
E * E E + E
E + E a a=2 a *
E E
a a a a
E=8 E=6
2/20/24 95
5. Văn phạm phi ngữ cảnh
2/20/24 96
5. Văn phạm phi ngữ cảnh
<Stmt>
E® TE’
E® E+T | T E’ ®+TE’ | ε
T® T*F | F T® FT’
F ®(E) | a T’® *FT’ | ε
F ®(E) | a
2/20/24 100
5. Văn phạm phi ngữ cảnh
Ký hiệu vô ích
• X là hữu sinh
2/20/24 101
5. Văn phạm phi ngữ cảnh
2/20/24 104
5. Văn phạm phi ngữ cảnh
2/20/24 107
6. Giới thiệu ngôn ngữ PL/0 mở rộng
2/20/24 108
6. Giới thiệu ngôn ngữ PL/0 mở rộng
Ký pháp BNF
Là một tập các luật thỏa mãn:
– Vế trái của mỗi luật là một cấu trúc cú pháp.
– Tên cấu trúc cú pháp là ký hiệu không kết thúc.
– Ký hiệu không kết thúc được bao trong cặp <>
– Ký hiệu kết thúc được phân cách bằng cặp nháy
đơn hoặc nháy kép
– Mỗi ký hiệu không kết thúc được định nghĩa bằng
một hay nhiều luật.
– Các luật có dạng N ::= s
• N là ký hiệu không kết thúc,
• s là một xâu gồm 0 hay nhiều ký hiệu kết thúc và
không kết thúc.
–
2/20/24
Các luật có chung vế trái được phân cách bằng | 109
6. Giới thiệu ngôn ngữ PL/0 mở rộng
Ký pháp BNF®Ví dụ
Ký pháp EBNF ® Ví dụ
• S®a {b} Û S®a |ab|abb|….
• S® [a]α Û S® α |a α
• S® (a|b|c)α Û S® aα | bα | cα
Sơ đồ cú pháp
• Là công cụ để mô tả cú pháp của ngôn ngữ lập
trình dưới dạng đồ thị
• Mỗi sơ đồ cú pháp là một đồ thị định hướng với lối
vào và lối ra xác định.
• Mỗi sơ đồ cú pháp có một tên duy nhất
2/20/24 113
6. Giới thiệu ngôn ngữ PL/0 mở rộng
Dạng EBNF
<program> ::= PROGRAM <Identifier> ; <Block>.
Dạng sơ đồ
Program
PROGRAM Ident ; Block
2/20/24 116
Block
CONST Ident = Number
,
;
Statement ;
2/20/24 117
Statement
Ident := Expression
[ Expression ]
Statement ;
ELSE Statement
IF Condition THEN Statement
WHILE Condition DO Statement
Expression DO Statement
2/20/24 118
Expression
+
Term
-
+
Term
-
Term
Factor
*
Factor %
/
2/20/24 119
Factor
Ident
[ Expression ]
Number
( Expression )
Condition
ODD Expression
>
>=
Expression Expression
<
<=
<>
2/20/24 120
6. Giới thiệu ngôn ngữ PL/0 mở rộng
2/20/24 122
6. Giới thiệu ngôn ngữ PL/0 mở rộng