1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tiểu luận chương trình dịch 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 sang mã 3 địa chỉ

21 600 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 173 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

- Quá trình phân tích cú pháp được thực hiện theo phương pháp từ dưới lên - Giai đoạn xử lý ngữ nghĩa sinh viên phải thực hiện bằng cách đặt các hành vi ngữ nghĩa vào bản đặc tả cú pháp.

Trang 1

BÀI TẬP LỚN Chương Trình Dịch

ĐỀ TÀI:

“Đề tài 7”

Giáo viên hướng dẫn : Phan Thị Thu Hồng.

Nhóm sinh viên t/h : Nguyễn Thị Hồng Anh

Nguyễn Thị Thu Quỳnh

Hoàng Thị Hoa

Lớp : Tin học A - K51.

HÀ NỘI - 2012

Trang 2

- Thực hiện chuyển đổi kiểu từ nguyên sang thực khi cần thiết

- Các danh hiệu phải khai báo trước

Yêu cầu:

- Viết chương trình bằng tay

- Quá trình phân tích cú pháp được thực hiện theo phương pháp từ dưới lên

- Giai đoạn xử lý ngữ nghĩa sinh viên phải thực hiện bằng cách đặt các hành

vi ngữ nghĩa vào bản đặc tả cú pháp

Nhóm 12-L p THC-K52 ớp THC-K52

Trang 3

Cú pháp: <Tên biến>:=<Biểu thức>;

* Ý nghĩa :

Biến và các phát biểu gán là các khái niệm quan trọng của một họ các ngôn ngữ lập trình mà Pascal là một đại diện tiêu biểu Chúng phản ánh cách thức hoạt động của máy tính hiện nay, đó là:

- Lưu trữ các giá trị khác nhau vào 1 ô nhớ tại những thời điểm khác nhau

- Một quá trình tính toán có thể coi như là 1 quá trình làm thay đổi giá trị của 1( hay 1 số) ô nhớ nào đó, cho đến khi đạt được giá trị cần tìm

Một khối lệnh bắt đầu bằng BEGIN và chấm dứt ở END

Cú pháp:

Begin

Công việc 1;

Begin End;

Công việc 2;

End;

c Lệnh lặp for

Cấu trúc FOR cho phép lặp lại nhiều lần 1 dãy lệnh Số lần lặp lại dãy lệnh

đã biết trước Phát biểu For có 2 dạng:

Trang 4

phép toán lôgic tạo thành biểu thức lôgic

- Biểu thức lôgic đơn giản là biến lôgic hoặc hằng lôgic

- Các biểu thức quan hệ phải được đặt trong cặp dấu ( )

- Giá trị biểu thức lôgic là TRUE hoặc FALSE

Được tạo bởi:

Một biến hoặc một hằng kiểu nguyên hay thực;

- Các biến hay hằng liên kết với nhau bởi các phép toán số học, các dấu ngoặc tròn

Lần lượt từ trái sang phải

- Thực hiện các phép toán trong ngoặc tròn trước

- Dãy các phép toán không chứa ngoặc thực hiện từ trái sang phải

theo thứ tự:

+ Các phép toán * /

+ Các phép toán + - thực hiện sau

Biểu thức chứa một hằng hay biến kiểu thực là biểu thức số học thực, giá trị biểu thức có kiểu thực

Nhóm 12-L p THC-K52 ớp THC-K52

Trang 5

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’)

(‘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’)(‘o’|’O’)(‘l’|’L’)(‘e’|’E’)(‘a’|’A’)

(‘n’|’N’)

IntegerRealBoolean

Trang 6

OP2 *,/ ‘+’, ‘-‘ ‘*’,’/’ multi,div

Relop =, <, >, <=, >=,<> ‘=’, ’<’, ’>’, ’<=’, ’>=’, ’<>’ EQ, LT, GT,LE,GE,NE

letter → ‘a’| |’z’|’A’| |’Z’

- 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):

Trang 7

Sơ đồ dịch của id và từ khóa:

+ lặp lại một hoặc nhiều lần

? lặp lại không hoặc 1 lần

digit

digit

1

2

20 other

return(num,vtr bdb)

return(num,vtr bdb)

22

Trang 8

Sơ đồ dịch nhận dạng khoảng trắng:

II Phân tích cú pháp

A Các luật sinh

s → program

1) program → khaibao body DOT

2) program → body DOT

‘Khai bao

3) khaibao → VAR n_khaibao

4) n_khaibao → kbkieu SEMI n_khaibao // x:integer ; y:real

5) n_khaibao → kbkieu

6) kbkieu→ n_id COLON TYPE SEMI // x:integer

7) n_id → ID COMMA n_id //x,y,z

15) Lgan → ID ASSGN exp SEMI

16) exp → exp OP1 term

Trang 9

22) term → LPARA exp RPARA

23) term → OP1 term

24) term → NOT term

25) term → TRUE

26) term → FALSE

27) lenh_For→FOR Lgan TO Tricuoi DO body SEMI

28) lenh_For →FOR Lgan DOWNTO Tricuoi DO body SEMI29)Tricuoi→ID|NUM

Trang 11

kbkieu→ n_id COLON TYPE SEMI

n_id → ID COMMA n_id

Lgan → ID ASSGN exp SEMI

lenh_For→.FOR Lgan TO Tricuoi DO body SEMI

lenh_For →.FOR Lgan DOWNTO Tricuoi DO body SEMII6=goto(I3,body)

program→khaibao body dot

goto(I3,begin)=I5

Trang 12

lenh_For→FOR Lgan TO Tricuoi DO body SEMI

lenh_For →FOR Lgan DOWNTO Tricuoi DO body SEMI Lgan → ID ASSGN exp SEMI

I18=goto(I6,DOT)

program→khaibao body dot

I19=goto(I8,SEMI)

n_khaibao → kbkieu SEMI n_khaibao

n_khaibao → kbkieu SEMI n_khaibao

n_khaibao → kbkieu

kbkieu→ n_id COLON TYPE SEMI

n_id → ID COMMA n_id

n_id → ID

I20=goto(I9,COLON)

Nhóm 12-L p THC-K52 ớp THC-K52

Trang 13

kbkieu→ n_id COLON TYPE SEMI

I21=goto(I10,COMMA)

n_id →ID COMMA n_id

n_id →.ID COMMA n_id

Lgan → ID ASSGN exp SEMI

lenh_For→.FOR Lgan TO Tricuoi DO body SEMI

lenh_For →.FOR Lgan DOWNTO Tricuoi DO body SEMII24=goto(I16,ASSGN)

Lgan → ID ASSGN exp SEMI

exp → exp OP1 term

term → LPARA exp RPARA

term → OP1 term

term → NOT term

term → TRUE

term → FALSE

I25=goto(I17,Lgan)

lenh_For→FOR Lgan TO Tricuoi DO body SEMI

lenh_For →FOR Lgan DOWNTO Tricuoi DO body SEMIgoto(I17,ASSGN)=I25

I26=goto(I19,n_khaibao)

n_khaibao → kbkieu SEMI n_khaibao

goto(I20,kbkieu)=I9

Trang 14

goto(I20, n_id) =I10

Lgan → ID ASSGN exp SEMI

exp → exp OP1 term

exp→ exp OP2 term

term → LPARA exp RPARA

exp → exp OP1 term

term → LPARA exp RPARA

term → OP1 term

Nhóm 12-L p THC-K52 ớp THC-K52

Trang 15

term → NOT term

term → LPARA exp RPARA

term → OP1 term

term → NOT term

term → LPARA exp RPARA

term → OP1 term

term → NOT term

Trang 16

term → LPARA exp RPARA

exp → exp OP1 term

exp→ exp OP2 term

Trang 18

lenh_For→FOR Lgan TO Tricuoi DO body SEMI

body→.BEGIN n_stmt End SEMI

I57=goto(I52,DO)

lenh_For →FOR Lgan DOWNTO Tricuoi DO body SEMI

body→.BEGIN n_stmt End SEMI

III Phân tích ngữ nghĩa

- Giai đoạn phân tích ngữ nghĩa sẽ thực hiện việc kiểm tra xem chương trình

nguồn có chứa lỗi về ngữ nghĩa hay không và tập hợp thông tin về kiểu chogiai đoạn sinh mã về sau

- Phân tích ngữ nghĩa gồm 2 nội dung cơ bản:

+Kiểm tra kiểu

+Chuyển đổi kiểu

IV Sinh mã 3 địa chỉ

- Mã 3 địa chỉ là một dạng biểu diễn của mã trung gian

- Mã lệnh 3 địa chỉ là một chuỗi các lệnh có dạng tổng quát là:

x := y op z

Trong đó: - x, y, z là tên, hằng hoặc dữ liệu tạm sinh ra trong khi dịch

- op là một toán tử số học hoặc login

Nhóm 12-L p THC-K52 ớp THC-K52

Ngày đăng: 20/03/2015, 23:30

HÌNH ẢNH LIÊN QUAN

Sơ đồ dịch nhận dạng khoảng trắng: - Tiểu luận chương trình dịch 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 sang mã 3 địa chỉ
Sơ đồ d ịch nhận dạng khoảng trắng: (Trang 8)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w