1
NGÔN NG
PHƯƠNG PHÁP DCH
PhmĐăng Hi
haipd@soict.hut.edu.vn
29/4/2012
Chương 1: Nhng khái nimcơbn
1. Ngôn nglptrìnhcp cao trình dch
2. Đặctrưng ca ngôn nglptrìnhcpcao
3. Các giai đon chính cachương trình dch
4. Khái nim ngôn ng
5. Vănphm phi ngcnh
6. GiithiungônngPL/0 mrng
39/4/2012
Scnthiếtca ngôn nglptrìnhbccao
•Nhiuloi máy tính
–Miloinhiukiu
•Mikiu ngôn ngmáy riêng
Ngôn ngmáy dãy nhphân
1. Ngôn nglptrìnhcpcaovàtrìnhdch
Dùng ngôn ngmáy
Không phidch
–Phctp
Không khchuyn
•Cnngônng
Độclpvimáy
–Gnvingtnhiên
d: C, Pascal, basic..
Ngôn ng
bccao
49/4/2012
Ngôn nglptrìnhcp cao (NNLTCC)
Chương trình viếtbng NNLTCC
Độclpvi máy tính
•Gnvi ngôn ngtnhiên
•Chương trình dễđc, viếtvàbotrì
•Munthchinphichuyn sang ngôn ng
–Máyhiuđược(ngôn ngmáy)
Ngôn ngtrung gian máy hiuđược
ĐượcchuynđổibiChương trình dch
•Chương trình thchinchmhơn
1. Ngôn nglptrìnhcpcaovàtrìnhdch
59/4/2012
Chương trình biên dch (compiler)
•Chương trình dch làm nhimvdch
chương trình ngun(thường đượcviếtbng
ngôn nglptrìnhbccao) sang các
chương trình đốitượng (chương trình đích)
1. Ngôn nglptrìnhcpcaovàtrìnhdch
Compiler
Chương trình
ngunChương trình
đích
Thông báo li
•Chương trình đíchcóthkhông thchin
được ngay cnliênkết (link) đếnthưvin
để đượcchương trình thchin69/4/2012
Các bướcx chương trình
1. Ngôn nglptrìnhcpcaovàtrìnhdch
Chương trình
ngun
loader
máy
tuytđối
đối
tượng
compiler
thc
hin
linker
Thưvin
Phase
dch
2
79/4/2012
Thông dch (interpreter)
Làm nhimvgiithích
chương trình ngun
Phân tích câu lnh tiếp
–Thchincâulnh
1. Ngôn nglptrìnhcpcaovàtrìnhdch
Chương trình
ngun
interpreter
Kếtqu
Dliu
•Chương trình thông dch
kích thướcnhhơn,
nhưng chychmhơn
89/4/2012
Dch thchinchương trình ngun
1. Ngôn nglptrìnhcpcaovàtrìnhdch
Chương trình ngun
Chương trình bng
ngôn ngtrung gian
compiler
interpreter
Kếtqu
Phase 2: Thchin
trung gian
Phase 1: Chuynt
chương trình ngun
sang NN trung gian
99/4/2012
Compiler >< interpreter
1. Ngôn nglptrìnhcpcaovàtrìnhdch
Compiler : Dch trctiếpramãmáy
Interpreter : Trctiếpthchintng lnh ngun
•Biếnthca Interpreter : thông dch trung gian
109/4/2012
Xây dng chương trình dch
•Viếttrctiếptngôn ngmáy
–Khókhăn
•Sdng ngôn ngbccao
–Ddàng thchin, hiuqu
–Tăng tính khchuyn,..
Chương trình bccaođầutiên?
–Chiếnlượcchương trình mi(bootstraps) trong
đóchương trình dch đượcđặctrưng bi
•Ngônngngunđượcdch S
•Ngônngữđích T
•Ngônngcài đặtI
1. Ngôn nglptrìnhcpcaovàtrìnhdch
ST
I
119/4/2012
Xây dng chương trình dch
Viếtchương trình dch L cho máy M
Dùng hpngcaM viếtL’làtp con caL
Dùng L’ để viếtL
Nhưvy, L đượcthchin qua L’ để ra M
1. Ngôn nglptrìnhcpcaovàtrìnhdch
LM
L’ L’ M
M
LM
M
PL0 PC
CC
C
PC
PL0 PC
PC
129/4/2012
Chương 1: Nhng khái nimcơbn
1. Ngôn nglptrìnhcp cao trình dch
2. Đặctrưng ca ngôn nglptrìnhcpcao
3. Các giai đon chính cachương trình dch
4. Khái nim ngôn ng
5. Vănphm phi ngcnh
6. GiithiungônngPL/0 mrng
3
139/4/2012
Các thếhngôn nglptrình
Được chia thành 5 thếh.
•Vic phân chia cp cao hay thpphthuc
mcđộ trutượng ca ngôn ng
–Cpthp: gnvimáy
–Cpcao: gnvi ngôn ngtnhiên
2. Đặctrưng ca ngôn nglptrìnhcpcao
149/4/2012
Các thếhngôn nglptrình
Các ngôn nglptrìnhbcthp
–Thếhthnht : ngôn ngmáy
–Thếhthhai : Assembly
•Thếhthba
–Dhiuhơn
•Câulnh gn ngôn ngtnhiên
Cho phép thchin các khai báo, Ví dbiến
–Phnln các NNLT cho phép lptrìnhcutrúc
–Víd: Fortran, Cobol, C, C++, Basic .
2. Đặctrưng ca ngôn nglptrìnhcpcao
Ngôn ngbccao
159/4/2012
Các thếhngôn nglptrình
Ngôn nglptrìnhthếhthtư
–Thường đượcsdng trong mtlĩnh vccth
–Dlptrình,xâydng phnmm
–Cóthkèm công cto form, báo cáo
–Víd:SQL, Visual Basic, Oracle . . .
Ngôn nglptrìnhthếhthnăm
–Giiquyết bài toán datrêncácràngbucđưaracho
chương trình (không phigiithutcangườilptrình)
–Vicgii quyết bài toán do máy tính thchin
–Phnln các ngôn ngdùng để lptrìnhlogic
•Giiquyết các bài toán trong lĩnh vctrítunhân to
2. Đặctrưng ca ngôn nglptrìnhcpcao
169/4/2012
Các thành phncaNNLTCC
1. Tvng pháp
2. Kiudliu
3. Các đạilượng
4. Các toán t biuthc
5. Các câu lnh
6. Chương trình con
2. Đặctrưng ca ngôn nglptrìnhcpcao
179/4/2012
Tvng pháp
Tvng
–Chcái: A..Z, a..z
–Chsô: 0..9
–Du: duchcnăng, du toán t
•Duđơn: +, -, ; {, }
•Du kép: >=, <=, /*, */
–Tkhóa : tnh riêng cho ngôn ng
Được dùng để khai báo, ra lnh cho chương trình
pháp
các quy tcđể
•Viếtracácđạilượng
•Viếtcáccâulnh
2. Đặctrưng ca ngôn nglptrìnhcpcao
189/4/2012
Kiudliu
Các kiucơbn
–Kiusnguyên int Interger
–Kiusthcfloat Real
–Kiukýtchar Char
–Kiu logic 0, 1 Boolean
Kiudliucócutrúc
–Kiumng [ ] Array
–Kiuchui*String
–Kiubnghi struct Record
–Kiu con tr, &^
–Kiu file FILE File
2. Đặctrưng ca ngôn nglptrìnhcpcao
4
199/4/2012
Các đạilượng
Hng
–Snguyên
•Cáchbiudin (decimal,octal, hexadecimal,..)
–Sthc
•Duphytĩnh
•Duphyđộng
–Hng chui
•C:Hello
Pascal: ‘Hello’
Tên
–Nguyêntcđặttên?
Độ dài?
2. Đặctrưng ca ngôn nglptrìnhcpcao
209/4/2012
Toán t biuthc
Toán t
–Shc: cng (+), chia, chia dư(%, MOD),..
Logic
•Quanh: bng (=,==) khác (!=, <>), lnhơn, (>),..
Logic: Và (AND, &&), hoc( OR, ||),..
Xâu: ghép xâu Pascal
BiuthcKếthp các toán hng bitoánt
–Shc: Trvmtcon s
Logic: Trvmtgiátrlunlý
Xâu: Trvmtchuikýhiu
2. Đặctrưng ca ngôn nglptrìnhcpcao
219/4/2012
Các câu lnh
Câu lnh tunt
–Câulnh gán: :=, =
–Câulnh vào/ra, gi hàm
–Câulnh ghép, gp: begin..end, { }
Câu lnh rnhánh
–1 vào1 ra:
if…then, if()
1 vào 2 ra: if …then…else, if()…else
1 vào, nhiura: case …..of, switch() {}
Câu lnh lp
–Slnlpxácđịnh: For ..to/downto..do, for( ; ; )
–Kimtrađiukintrước: While.. Do, while ()
–Kimtrađiukin sau: Repeat..Until, do..while()
2. Đặctrưng ca ngôn nglptrìnhcpcao
229/4/2012
Chương trình con
Các dng chương trình con
–ThtcKhông trvgiá tr(void)
–HàmTrvmtgiátr
Vnđề truyn tham s
Truyntheotr: Không thay đổigiátr
Truyntheobiến(địach): thay đổigiátr
Vnđề Địaphương /toàn cc
Địaphương: chtnti trong chương trình con
Roàn cc: Tnti trong toàn bchương trình
2. Đặctrưng ca ngôn nglptrìnhcpcao
239/4/2012
Nhnxét
Ngôn nglptrìnhbccaocó
nguyên tcging nhau, cách th
hincóthkhác nhau
2. Đặctrưng ca ngôn nglptrìnhcpcao
249/4/2012
Chương 1: Nhng khái nimcơbn
1. Ngôn nglptrìnhcp cao trình dch
2. Đặctrưng ca ngôn nglptrìnhcpcao
3. Các giai đon chính cachương trình dch
4. Khái nim ngôn ng
5. Vănphm phi ngcnh
6. GiithiungônngPL/0 mrng
5
259/4/2012
Các phase cachương trình dch
Chương trình dch gm 3 phase chính
1. Phân tích tvng
2. Phân tích pháp
Phân tích ngnghĩa
3. Sinh
3. Các giai đon chính cachương trình dch
269/4/2012
Cutrúcchương trình dch
Phân tích tvng
Chương trình ngun
Phântíchcúpháp
Phân tích ngnghĩa
Sinh trung gian
Tiưumã
Sinh máy
Chương trình đích
Bng
hiu
X
li
279/4/2012
Bng hiu
3. Các giai đon chính cachương trình dch
•Làcutrúcdliu dùng chatênvàthuc
tính cnthiếtca chúng
–Thuctínhcungcp thông tin
•Vtrí, kiu, phmvhotđộng…
–Nếulàtênchương trình con: stham s, kiutrv
–Tênđượcxácđịnh bibphân tích tvng
•Khichra đượcmt tên, tùy thucvàovtrí
ca tên trong chương trình
Đưatênvàthuc tính vào bng hiu
–Ly thông tin ca tên trong bng hiu
289/4/2012
Bng hiu d
pos = init + 10 * size;
3. Các giai đon chính cachương trình dch
float pos, init, size; //var pos, init, size: real
Bng hiu
….
….
LoiKiuTên
….
varrealpos
Id1
varrealinitId2
varrealsizeId3
….
LoiKiuTên
Tên
Kiu
299/4/2012
Phân tích tvng (Lexical Analysis - Scanner)
3. Các giai đon chính cachương trình dch
pha đầutiêncachương trình dch
•Duyttng tcachương trình ngun
–Loibcáckýttha
•Du tab, khong trng, chú tch..
•Xâydng các tvng tcáckýtựđcđược
•Nhndng các tttcác tvng
Tt(token) đơnv pháp đượcx
trong quá trình dch nhưmtthcthkhông
thchia nhhơnna
Chuyncácttcho pha tiếp
309/4/2012
Phân tích tvng d
3. Các giai đon chính cachương trình dch
BPTTV thchin
Đọctng t: btđầutchcái p
–Nhndng tvng thucdng tên, hoctkhóa ( bt
đầubi1 chcái)
Đọctiếp(
o, s) tikhigpkýtkhác chcái, chs,
•Gpdutrng xây dng xong tvng pos
–Do pos không trùng vitkhóa. Vypos tên (ident)
–Trlichobphân tích pháp ttident
Đọctiếpđượcdu:ridu= sau đóducách
–Nhndng đượctvng := trvttgán (assign)
pos := init + 10 * size;