Tải bản đầy đủ (.doc) (35 trang)

Bài tập lớn Chương trình dịch – Đề số 2

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (200.04 KB, 35 trang )

Chương trình dịch – Đề số 2

Giảng viên hướng dẫn: Phan Thị Thu Hồng
Nhóm 01:
1. Dương Thị Bích Phượng
2. Nguyễn Thị Yến
3. Phạm Minh Đức
Lớp: THC52
============================================================
Đề số 2
Viết trình biên dịch để dịch 1 đoạn chương trình gồm các phát
biểu sau:

Phát biểu gán, repeat until trong pascal

Các phát biểu kết thúc bằng dấu ;

Các biểu thức trong các phát biểu gồm các phép toán logic
Not, And, Or và các phép so sánh. Các toán hạng gồm các định
danh, hằng số thực, nguyên, true, false (kể cả biểu thức). Độ ưu
tiên các phép toán tương tự Pascal.

Thực hiện chuyển đổi kiểu từ nguyên sang thực khi cần thiết.
A. Tìm hiểu những nội dung liên quan đến yêu cầu đề bài
I. Phát biểu gán, repeat until trong pascal
1. Phát biểu gán (:=)
Một trong các lệnh đơn giản và cơ bản nhất của Pascal là lệnh gán. Mục đích của
lệnh này là gán cho một biến đã khai báo một giá trị nào đó cùng kiểu với biến.
* Cách viết:
<Tên_biến> := <biểu thức> ;


1
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

2. Phát biểu repeat…until
Câu lệnh REPEAT UNTIL dùng trong các trường hợp khi biến điều khiển
không có kiểu rời rạc và đặc biệt trong các trường hợp số lần lặp không biết trước.
Repeat
<Công việc>;
UNTIL <Điều kiện thoát>
* Ý nghĩa câu lệnh:
Nếu <điều kiện thoát> là Sai (False) thì lặp lại <công việc> cho đến khi điều kiện
Đúng thì mới thoát ra khỏi cấu trúc REPEAT UNTIL.
Nếu có nhiều câu lệnh thì mỗi lệnh ngăn cách nhau bằng dấu chấm phẩy (;) Công
việc của REPEAT và UNTIL không nhất thiết phải dùng lệnh ghép để nhóm từ 2 lệnh
đơn trở lên thành công việc.
II. Các phép toán
1. Các phép toán logic
Các phép tính NOT, AND, OR, XOR xử lý các bít nhị phân được xác định như sau :
NOT 1 =
0
1 AND 1=1 1 OR 1=1 1 XOR 1=0
NOT 0 =
1
1 AND 0=0 1 OR 0=1 1 XOR 0=1
0 AND 1=0 0 OR 1=1 0 XOR 1=1
0 AND 0=0 0 OR 0=0 0 XOR 0=0

2
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin

Chương trình dịch – Đề số 2

Mỗi số nguyên được biểu diễn trong máy dưới dạng một dãy các bít nhị phân. Số
kiểu Integer được biểu diễn bằng 16 bit. Ví dụ, số 1 và số 2 có biểu diễn trong máy
lần lượt là :
0000 0000 0000 0001
0000 0000 0000 0011
Phép lấy NOT một số nguyên sẽ đảo tất cả các bít biểu diễn số nguyên đó, tức
là 0 thành 1, còn 1 thành 0. Ví dụ:
NOT 1 = 1111 1111 1111 1110
NOT 2 = 1111 1111 1111 1100
Phép lấy AND, OR, XOR hai số nguyên được tiến hành bằng cách AND, OR,
XOR từng cặp bít tương ứng của hai số đó, ví dụ:
1 OR 2 = 0000 0000 0000 0011= 2
1 AND 2 = 0000 0000 0000 0001= 1
2. Các phép toán so sánh
Ký hiệu Ý nghĩa Ví dụ
= bằng nhau x=y
<> khác nhau x<>y
< nhỏ hơn x<y
<= nhỏ hơn hoặc bằng x<=y
> lớn hơn x>y
>= lớn hơn hoặc bằng x>=y
|

3
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

B. Nội dung thực hiện

I. Phân tích từ vựng
1. Bảng token
Token Lexeme Match Attribute
ID a1,d_e3c,ba2, (letter|’_’)(letter|digit|’_’)* vtrí BDB
ASG := ‘:=’
SEMI ; ‘;’
COLON : ‘:’
COMA , ‘,’
DOTDOT ‘ ’
PROGRA
M
Program,ProGram

(‘p’|’P’)(‘r’|’R’)(‘o’|’O’)(‘g’|’G’)
(‘a’|’A’)
VAR Var, var , (‘v’|’V’)(‘a’|’A’)(‘r’|’R’)
BEGIN beGin,Begin, (‘b’|’B’)(‘e’|’E’)(‘g’|’G’) (‘i’|’I’)
(‘n’|’N’)
END End,end, eNd, (‘e’|’E’)(‘n’|’N’)(‘d’|’D’)
REPEAT Repeat, RePeat… (‘R’|’r’)(‘e’|’E’)(‘P’|’p’)(‘A’|’a’)(‘t’|’T’)
UNTIL until,Until,UnTil… (‘u’|’U’)(‘n’|’N’)(‘t’|’T’)(‘i’|’I’)(‘l’|’L)
NOT not,Not,… (‘n’|’N’) (‘o’|’O’) (‘t’|’T’)
AND and,And,… (‘a’|’A’) (‘n’|’N’) (‘d’|’D’)
OR or,Or,… (‘o’|’O’) (‘r’|’R’)
TYPE Integer, iNteger, …
Real, rEal, …
Boolean, BooLean
(‘i’|’I’)(‘n’|’N’)(‘t’|’T’)(‘e’|’E’)(‘g’|’G’)
(‘e’|’E’) (‘r’|’R’) |
(‘r’|’R’)(‘e’|’E’)(‘a’|’A’)(‘l’|’L’) |

(‘B’|’b’)(‘O’|’o’)(‘L’|’l’)(‘E’|’e’)
(‘A’|’a’)(‘N’|’n’)
Integer
Real
Boolean
NUM 1,33,10,490,… digit(digit)* vtrí BDB
NUMREA
L
1.2, 2E-3 ,0.5e+4
digit
+
.digit
+
| digit
+
(.digit
+
|∈)(‘e’|’E’)
(‘+’|’- ‘|∈)digit
+
vtrí BDB
OP1 +,- ‘+’, ‘-‘ plus,minus
OP2 *,/ ‘*’,’/’ multiplicati
on,division
RELOP =, <, >, <=, >=, <> ‘=’, ’<’, ’>’, ’<=’, ’>=’, ’<>’
EQ, LT,
GT,
LE,GE,NE
RPAR ) ‘)’


4
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

LPAR ( ‘(’
DOT . ‘.’
TRUE True, true, TRUE
FALSE FALSE, False,
FaLse
(‘F’|’f’)(‘A’|’a’)(‘L’|’l’)(‘S’|’s’)(‘E’|’e’)
Ghi chú:
letter → A | B | … | Z | a | b | … | z
digit → 0 | 1 | 2 | … | 9
Định nghĩa token
a. ID
letter → A | B | … | Z | a | b | … | z
digit → 0 | 1 | 2 | … | 9
id → letter (letter | digit)
*
b. NUM
digit → 0 | 1 | 2 | … | 9
digits → digit digit
*
optional_fraction → .digits |
ε
optional_exponent → ( E ( + | - |
ε
) digits) |
ε
num → digits optional_fraction optional_exponent

• Ghi chú:

5
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

- BDB: bảng danh biểu.
- Các từ khóa(keyword) được insert vào bảng danh biểu trước khi phân tích từ
vựng.
- Thứ tự ưu tiên của các phép toán trong Pascal (tương ứng với các phép toán đề
bài đưa ra):
+ Dấu ngoặc ( )
+ Phép toán một ngôi: NOT.
+ Phép toán *, /, AND.
+ Phép toán +, -, OR
+ Phép toán so sánh =, <, >, <=, >=, <>
2. LƯỢC ĐỒ DỊCH
2.1 Sơ đồ dịch của id và từ khóa:
2.2 Sơ đồ nhận dạng OP1:

6
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Start
letter | digit
|‘_’
letter | ‘_’
return(id, lookup(id))
other
0 1
2

*
Start
0 3
4
+
-
return(OP1, minus)
return(OP1, plus)
Chương trình dịch – Đề số 2

2.3 Sơ đồ nhận dạng OP2:
2.4 Sơ đồ dịch nhận dạng hằng số:
2.5 Sơ đồ dịch nhận dạng token các toán tử quan hệ relop:

7
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
3
1
1

0
0
0
6
7
‘.’
other
return(numreal,vtrí
bdb)
digit

digit

‘+’|’-

8
4
9
5
digit
‘E’
|’e’
5
2
7
3
digit
return(numreal,vtrí
Bbdb)
digit
other
6
8
8
other
*
*
‘E’
|’e’
Sta
rrrt

digit
1
0
digit
0
2
7
8
other
return(num,vtrí )))))
)bdb)
returnnum,vtrí
bdb)
4
9
8
Start
0 3
4
return(OP2, multiplication)
return(OP2, division)
*
/
Chương trình dịch – Đề số 2

II. PHÂN TÍCH CÚ PHÁP
1. Văn phạm gia tố
1.1 Văn phạm gốc
1)S -> ten kbao body DOT
/* PROGRAM bai1

VAR
BEGIN
END.
*/


8
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Start
0
<
1
=
2
return(relop, LE)
3
>
return(relop, NE)
other
4
return(relop, LT)
5
=
7
=
8
other
6
>
return(relop, GT)

22
return(relop, EG)
return(relop, EQ)
*
Chương trình dịch – Đề số 2

2) Ten -> PROGRAM ID
3)kbao -> Var n_kbao
4)n_kbao -> kbk SEMI n_kbao // a:integer; b:real;
5)kbk -> n_ID CONON TYPE SEMI //a:integer;
6)n_ID -> ID | ID COMA n_ID // a|a,b (truong hop nhieu bien co cung
kieu)
7)Body -> BEGIN n_lenh END
8)n_lenh -> lenh SEMI n_lenh | Ɛ // Thuc hien 1 hoac nhieu lenh | khong co
lenh nao
9)lenh -> l_gan
10)lenh -> body
11)lenh -> l_repeat_until
12) l_gan -> ID ASSGN exp SEMI //a:=0;
13) l_repeat_until -> Repeat r_body UNTIL r_until
14) r_until ->LPAR ID RELOP NUM RPAR | LPAR ID RELOP
NUMREAL RPAR | LPAR ID RELOP NUM AND ID RELOP NUM
RPAR | LPAR ID RELOP NUMREAL AND ID RELOP NUMREAL
RPAR | LPAR ID RELOP NUM OR ID RELOP NUM RPAR | LPAR ID
RELOP NUMREAL OR ID RELOP NUMREAL RPAR
// (n<=4) | (n<=4.4) | (n> 2 or n<10) | (n> 2 and m<5)
15) r_body -> n_lenh
16) exp -> exp OP1 term |exp OP2 term |term

9

Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

17) term -> factor
18)factor -> ID
19) factor -> NUM
20) factor -> NUMREAL
21) factor -> LPARA exp RPARA //a:=a * (c-d);
22) factor -> OP1 factor // a:= - b;
23) factor -> NOT factor //
24) factor -> TRUE // a:=true
25) factor -> FALSE //a:=false
1.2 Văn phạm sau khi loại bỏ đệ quy trái:
1)S -> ten kbao body DOT
2)ten -> PROGRAM ID
3)kbao -> Var n_kbao
4)n_kbao -> kbk SEMI n_kbao // a:integer; b:real;
5)kbk -> n_ID CONON TYPE SEMI //a:integer;
6)n_ID -> ID | ID COMA n_ID // a|a,b (truong hop nhieu bien co cung
kieu)
7)Body -> BEGIN n_lenh END
8)n_lenh -> lenh SEMI n_lenh | Ɛ // Thuc hien 1 hoac nhieu lenh | khong co
lenh nao
9)lenh -> l_gan
10)lenh -> body

10
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2


11)lenh -> l_repeat_until
12) l_gan -> ID ASSGN exp SEMI //a:=0;
13) l_repeat_until -> Repeat r_body UNTIL r_until
14) r_until ->LPAR ID RELOP NUM RPAR | LPAR ID RELOP
NUMREAL RPAR | LPAR ID RELOP NUM AND ID RELOP NUM
RPAR | LPAR ID RELOP NUMREAL AND ID RELOP NUMREAL
RPAR | LPAR ID RELOP NUM OR ID RELOP NUM RPAR | LPAR ID
RELOP NUMREAL OR ID RELOP NUMREAL RPAR
// (n<=4) | (n<=4.4) | (n> 2 or n<10) | (n> 2 and m<5)
15) r_body -> n_lenh
16) Exp -> term exp1
17) exp1 -> OP1 term exp1 |Ɛ
18) Exp -> term exp2
19) exp2 -> OP2 term exp2 |Ɛ
20) term -> factor
21)factor -> ID
22) factor -> NUM
23) factor -> NUMREAL
24) factor -> LPAR exp RPAR //a:=a * (c-d);
25) factor -> OP1 factor // a:= - b;
26) exp ->term
27) factor -> NOT factor //

11
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

28) factor -> TRUE
29)factor -> FALSE
2. Các ký hiệu kết thúc

1) VAR
2) COLON
3) TYPE
4) SEMI //( ; )
5) ID
6) COMA //(,)
7) BEGIN
8) END
9) ASSGN //(:=)
13) AND
14) OR
15) NOT
16) RELOP
17) OP1
18) OP2
19) NUM

12
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

20) NUMREAL
21) LPAR //(
22) RPAR //)
23) PROGRAM
24)TRUE
25)FALSE
26) $
3. Các ký hiệu chưa kết thúc
1) ten

2) Kbao
3) Body
4) n_kbao
5) Kbkieu
6) n_ID
7) n_lenh
8) lenh
9) l_gan
10) l_repeat_until
11) r_until

13
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

12) r_body
13) exp
14) term
15) factor
16) exp1
17) exp2
4.FIRST của những kí hiệu chưa kết thúc:
1) FIRST(ten) = (PROGRAM)
2) FIRST(kbao) = (VAR)
3) FIRST(n_kbao)=FIRST(kbkieu) = FIRST(n_ID)= ID
4) FIRST (body) = BEGIN
5) FIRST (n_lenh) =FIRST(r_body)= (ID, BEGIN,REPEAT, Ɛ)
6) FIRST (l_gan) = (ID)
7) FIRST (l_repeat_until) = (REPEAT)
8) FIRST (exp)=FIRST(term)=FIRST(factor)= (ID,NUM, NUMREAL,

LPARA, OP1, NOT, TRUE, FALSE)
9) FIRST(l_until) = (LPAR)
10) FIRST (lenh) = (ID, BEGIN,REPEAT)
11) FIRST (exp1)= (OP1,Ɛ)
12) FIRST (exp2)= (OP2,Ɛ)
5. Tính FOLLOW của những kí hiệu chưa kết thúc

14
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

1) FOLLOW (ten) = FOLLOW (kbao)= FOLLOW (n_kbao)= ($)
2) FOLLOW (body) = (SEMI, END, DOT)
3) FOLLOW(kbk) = FOLLOW (lenh) = FOLLOW (l_gan)= FOLLOW
(l_repeat_until)= FOLLOW (r_until)=(SEMI)
4) FOLLOW (n_ID) = (COMAN)
5) FOLLOW (n_lenh)= ( END, SEMI)
6) FOLLOW (exp)= =(RPARA, SEMI)
7) FOLLOW(term) = FOLLOW(factor) = (LPAR, SEMI, OP1, OP2)
6. Tính action, goto
/* Các luật:
1)S -> Ten kbao body DOT
2)Ten -> PROGRAM ID
3)kbao -> VAR n_kbao
4) n_kbao -> kbk SEMI n_kbao
5) kbk -> n_ID CONON TYPE SEMI
6) n_ID -> ID
7) n_ID ->ID COMA n_ID
8) Body -> BEGIN n_lenh END
9) n_lenh ->.lenh SEMI n_lenh


15
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

10) n_lenh -> Ɛ
11) lenh -> l_gan
12) lenh ->body
13) lenh -> l_repeat_until
14) l_gan -> ID ASSGN exp SEMI
15) l_repeat_until -> Repeat r_body UNTIL r_until
16) r_until ->LPAR ID RELOP NUM RPAR
17) r_until ->LPAR ID RELOP NUMREAL RPAR
18) r_until -> LPAR ID RELOP NUM AND ID RELOP NUM RPAR
19) r_until -> LPAR ID RELOP NUMREAL AND ID RELOP NUMREAL
RPAR
20) r_until ->LPAR ID RELOP NUM OR ID RELOP NUM RPAR
21) r_until ->LPAR ID RELOP NUMREAL OR ID RELOP NUMREAL
RPAR
22) r_body -> n_lenh
23) exp -> exp OP1 term
24) exp -> exp OP2 term
25) term -> factor
26) factor -> ID
27) factor -> NUM
28) factor -> NUMREAL
29) factor -> LPARA exp RPARA

16
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin

Chương trình dịch – Đề số 2

30) factor -> OP1 factor
31) factor -> NOT factor
32) exp ->term
33) factor -> TRUE
34) factor -> FALSE
I0:
S’ ->.S
S ->. Ten kbao body DOT
Ten -> .PROGRAM ID
kbao -> .VAR n_kbao
n_kbao -> .kbk SEMI n_kbao
kbk ->. n_ID CONON TYPE SEMI
n_ID ->. ID
n_ID ->. ID COMA n_ID
Body ->. BEGIN n_lenh END
n_lenh ->. lenh SEMI n_lenh | Ɛ
lenh ->. l_gan
lenh ->.body
lenh ->. l_repeat_until
l_gan ->. ID ASSGN exp SEMI

17
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

l_repeat_until ->. Repeat r_body UNTIL r_until
r_until ->.LPAR ID RELOP NUM RPAR
r_until ->.LPAR ID RELOP NUMREAL RPAR

r_until ->. LPAR ID RELOP NUM AND ID RELOP NUM RPAR
r_until ->. LPAR ID RELOP NUMREAL AND ID RELOP NUMREAL
RPAR
r_until ->.LPAR ID RELOP NUM OR ID RELOP NUM RPAR
r_until ->.LPAR ID RELOP NUMREAL OR ID RELOP NUMREAL
RPAR
r_body ->. n_lenh
exp -> .exp OP1 term
exp -> .exp OP2 term
term ->. factor
factor -> .ID
factor -> .NUM
factor ->. NUMREAL
factor -> .LPARA exp RPARA
factor -> .OP1 factor
factor -> .NOT factor
exp ->.term
factor -> .FALSE
factor -> .TRUE

18
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

I01=goto(I0,S)
S’->S.
*- - - - -
I02=goto(I0,ten)
S -> ten. Kbao body DOT
Kbao -> .VAR n_kbao

*
I021’=goto(I02,kbao)
S -> ten kbao. body DOT
body ->.BEGIN n_lenh END
*
I04=goto(I0,VAR)
Kbao ->VAR .n_kbao
N_kbao ->.kbk SEMI n_kbao
Kbk -> .n_ID CONON TYPE SEMI
N_ID -> .ID
N_ID ->. ID COMA n_ID
*
I05 =goto(I0,kbk)
N_kbao ->kbk. SEMI n_kbao
*

19
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

I06= goto (I0, n_ID)
Kbk ->n_ID .COMA n_ID
*
I07 = goto (I0, ID)
n_ID ->ID.
N_ID -> ID. COMA n_ID
L_gan -> ID. ASSGN exp SEMI
Factor -> ID.
*
I08= goto (I0, BEGIN)

Body -> BEGIN .n_lenh END
N_lenh -> .lenh SEMI n_lenh
N_lenh -> .Ɛ
Lenh -> .l_gan
Lenh -> .body
Lenh ->.l_repeat_until
L_gan -> .ID ASSGN exp SEMI
L_repeat_until -> .REPEAT r_body UNTIL r_until
Body ->.BEGIN n_lenh END
*
I09 = goto (I0,lenh)

20
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

N_lenh -> lenh .SEMI n_lenh
*
I010 = goto (I0, Ɛ)
N_lenh -> Ɛ.
*
I011 = goto (I0,l_gan)
Lenh ->l_gan.
*
I012 = goto (I0, body)
Lenh -> body.
*
I013 = goto (I0,l_repeat_until)
Lenh -> l_repeat_until.
*

I014 = goto (I0, REPEAT)
L_repeat_until -> REPEAT. r_body UNTIL r_until
R_body ->.n_lenh
N_lenh -> .lenh SEMI n_lenh
N_lenh -> .Ɛ
Lenh -> .l_gan
Lenh -> .body

21
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

Lenh ->.l_repeat_until
L_gan -> .ID ASSGN exp SEMI
L_repeat_until -> .REPEAT r_body UNTIL r_until
Body ->.BEGIN n_lenh END
*
I015 = goto (I0, LPAR)
R_until -> LPAR .
Factor -> LPAR . exp RPAR
exp -> .exp OP1 term
exp -> .exp OP2 term
exp ->.term
term ->. factor
factor -> .ID
factor -> .NUM
factor ->. NUMREAL
factor -> .LPARA exp RPARA
factor -> .OP1 factor
*

I016 = goto (I0, n_lenh)
R_body -> n_lenh.

22
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

*
I017 = goto (I0, exp)
Exp ->exp. OP1 term
Exp -> exp . OP2 term
*
I018 =goto (I0, term)
Exp ->term.
*
I019 = goto (I0, factor)
Term -> factor.
*
I020 = goto (I0, NUM)
Factor -> NUM.
*
I021 = goto (I0, NUMREAL)
Factor -> NUMREAL.
*
I022 = goto (I0, OP1)
Factor -> OP1.factor
factor ->. ID
factor -> .NUM

23

Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

factor -> .NUMREAL
factor -> .LPAR exp RPAR
factor ->. OP1 factor
*
I023 =goto (I0, NOT)
Factor -> NOT . factor
factor ->. ID
factor -> .NUM
factor -> .NUMREAL
factor -> .LPAR exp RPAR
factor ->. OP1 factor
*
I024 =goto (I0, FALSE)
Factor -> FALSE.
*
I024 =goto (I0, TRUE)
Factor -> TRUE.
*
I31 = goto (I03, body)
Program -> kbao body .DOT

24
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin
Chương trình dịch – Đề số 2

*
I32 = goto (I03, BEGIN)

Body -> BEGIN .n_lenh END
N_lenh -> .lenh SEMI n_lenh
N_lenh -> .Ɛ
Lenh -> .l_gan
Lenh -> .body
Lenh ->.l_repeat_until
L_gan -> .ID ASSGN exp SEMI
L_repeat_until -> .REPEAT r_body UNTIL r_until
Body ->.BEGIN n_lenh END
*
I41 = goto (I04, n_kbao)
Kbao -> VAR n_kbao.
*
I42 =goto (I04, kbk)
N_kbao -> kbk .SEMI n_kbao
*
I43 =goto (I04, n_ID)
Kbk -> nID .CONON TYPE SEMI
*

25
Nhóm 1 – Lớp THC52 – Khoa Công nghệ thông tin

×