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

Tiểu luận môn chương trình dịch Viết trình biên dịch để dịch 1 đoạn chương trình

26 603 0

Đ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 26
Dung lượng 291,5 KB

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

Nội dung

Báo cáo Chương trình dịchNhóm 11:Đỗ Thị Ngọc Bích Vũ Văn ChíPhạm Văn HưởngTrần Đăng Khoa ưu tiên các phép toán tương tự C.. Thực hiện chuyển đổi kiểu đổi kiểu từ nguyên sang thực khi cần

Trang 1

Báo cáo Chương trình dịchNhóm 11:

Đỗ Thị Ngọc Bích

Vũ Văn ChíPhạm Văn HưởngTrần Đăng Khoa

ưu tiên các phép toán tương tự C Thực hiện chuyển đổi kiểu đổi kiểu từ nguyên sang thực khi cần thiết

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 các bản đặc tả cú pháp

Trang 2

OP2 *, /, % ‘*’, ‘/’, ‘%’ mul, div, mod REPOP ==, <, >, <=, >=, !

Trang 3

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

*Sơ đồ chuyển tiếp nhận dạng chuỗi ký tự, từ khoá:

* Sơ đồ chuyển tiếp nhận dạng số nguyên, số thực:

Trang 4

* Sơ đồ chuyển tiếp cho các phép toán:

1 3

Start

1 5

=

1 6

2 2

1 9

2 1

2 0

2 3

1 8

1 7

=other

4

=

return(relop,LE) return(relop,LT) return(relop,GE) return(relop,GT)

!

return(relop,NE)

2 4

other

return(NOT)

2 8

2 6

2 7

2 5

Trang 5

* Sơ đồ chuyển cho các token khác

Start

3 0{

3 4

3 3

3 5

3 2

3 1}

)

;

return(BEGIN)

3 6

return(END) return(LPAR) return(RPAR) return(SEMI),

return(COMA)

3 7

return(COMM)

4 0

3 8

3 9

Trang 6

 Giải thuật mô phỏng lược đồ dịch để nhận dạng token:

int state; // state: để theo dõi các trạng thái chuyển đổi trên đồ thị chuyển.

int start; // start: trạng thái bắt đầu.

int fail(start)// Hàm fail dùng để trả lại đầu vào của một đồ thị chuyển tiếp theo.

{

switch(start){

case 1: start = 4; break;

case 4: start = 13; break;

case 13: start = 29; break;

case 29: recover(); //gọi hàm xử lý lỗi khi chương trình nguồn có lỗi.

ch = nextchar(); //hàm nextchar(): đọc vào ký tự tiếp theo.

if(ch== '_' || isalpha(ch)) state=2; //hàm isalpha(ch): Kiểm tra ký tự đọc vào có phải là chữ cái hay không.

else state=fail(1);

break;

case 2:

ch = nextchar();

if(!(ch== '_'|| isalpha(ch)||isdigit(ch))) state=3;

//hàm isdigit(ch): Kiểm tra ký tự đọc vào có phải là chữ số hay không.

break;

case 3:

retract(1); //Hàm retract(): xử lý các trạng thái có đánh dấu *

install_id(); //Hàm install_id(): kiểm tra ký tự nhập vào là từ khoá hay là một tên biến.

t.type=gettoken(); //Hàm install_id: trả về từ tố là mã của một từ khoá nào đó hoặc chuỗi ký tự tên.

Trang 7

else if(ch=='.') state=6;

else if(ch=='E'||ch=='e') state=8;

Trang 8

t.value=install_num();exitflag=1;

Trang 11

case',': state=35; break;case'/': state=36; break;case'*': state=37; break;default: state=fail(29);}

Trang 12

1 main → MAIN LPAR RPAR body

2 body → BEGIN ct END

Trang 13

11.n_id → ID COMA n_id

12.n_id → array LCRO NUMINT RCRO SEMI

13 n_id → ID

14.pbghep → BEGIN lenh END

15.if → IF LPAR bieu_thuc RPAR body_ if16.body_if → BEGIN lenh_ if END

36.factor → LPAR exp RPAR

37.factor → OP1 factor

Trang 15

D FIRST của các ký hiệu không kết thúc

1 FIRST(main) = {MAIN}

2 FIRST(body) = {BEGIN}

3 FIRST(ct) = {TYPE, ID, BEGIN, IF, ε}

4 FIRST(lenh) = {ID, BEGIN}

10.FIRST(lenh_if) = {TYPE, ID, BEGIN, IF }

11.FIRST(bieu_thuc) = {NOT, LPAR, ID, NUMINT, NUMFLOAT, OP1}

12.FIRST(bt1) = {NOT, LPAR}

13.FIRST(bt2) = { ID, NUMINT, NUMFLOAT, LPAR, OP1}

14.FIRST(bt3) = {LPAR}

15.FIRST(bt4) = { ID, NUMINT, NUMFLOAT, LPAR, OP1}

16.FIRST(exp) = {ID, NUMINT, NUMFLOAT, LPAR, OP1}

17.FIRST(term) = {ID, NUMINT, NUMFLOAT, LPAR, OP1}

18.FIRST(factor) = {ID, NUMINT, NUMFLOAT, LPAR, OP1}

14.FOLLOW(bt3) = {AND, OR, RPAR, $}

15.FOLLOW(bt4) = {RPAR, RELOP, $}

16.FOLLOW(exp) = {OP1, RPAR, RELOP, SEMI, $}

17.FOLLOW(term) = {OP1, OP2, RPAR, RELOP,SEMI, $}

18.FOLLOW(factor) = {OP1, OP2, RPAR, RELOP, SEMI, $}

Trang 16

F Tính tuyển

I0:

S → mainmain → MAIN LPAR RPAR body

I7 = goto(I6, ct)

body → BEGIN ct END

Trang 17

I8 = goto(I6, var) = goto(I10, var) = goto(I17, var) = goto(I18, var) =

goto(I60, var) = goto(I70, var) = goto(I71, var)

ct → var SEMI ct

ct → var SEMI

I9 = goto(I6, lenh) = goto(I10, lenh) = goto(I17, lenh) = goto(I18, lenh) = goto(I60, lenh) = goto(I70, lenh) = goto(I71, lenh)

ct → lenh SEMI ct

I11 = goto(I6, TYPE) = goto(I10, TYPE) = goto(I17, TYPE) = goto(I18, TYPE) = goto(I60, TYPE) = goto(I70, TYPE) = goto(I71, TYPE)

var → TYPE n_idn_id → ID COMA n_idn_id → ID

I13 = goto(I6, body) = goto(I10, body) = goto(I17, body) = goto(I18, body)

= goto(I60, body) = goto(I70, body) = goto(I71, body)

Trang 18

body → BEGIN ct END.

if → IF LPAR bieu_thuc RPAR body_ if

if → IF LPAR bieu_thuc RPAR body_ if

I21 = goto(I11, ID) = goto(I26, ID)

n_id → ID COMA n_idn_id → ID

Trang 19

I22 = goto(I14, ASG)

pbghep → BEGIN lenh END

exp → exp OP1 term

factor → LPAR exp RPAR

factor → OP1 factor

factor → LPAR exp RPAR

factor → OP1 factor

Trang 20

I26 = goto(I21, COMA)

n_id → ID COMA n_idn_id → ID COMA n_idn_id → ID

I27 = goto(I22, exp)

pbgan → ID ASG exp

exp → exp OP1 term

I28 = goto(I22, term) = goto(I23, term) = goto(I33, term) = goto(I40, term) = goto(I52, term) = goto(I55, term)

I30 = goto(I22, ID) = goto(I23, ID) = goto(I33, ID) = goto(I34, ID) =

goto(I40, ID) = goto(I44, ID) = goto(I45, ID) = goto(I52, ID) = goto(I55, ID)

factor → ID

I31 = goto(I22, NUMINT) = goto(I23, NUMINT) = goto(I33, NUMINT) = goto(I34, NUMINT) = goto(I40, NUMINT) = goto(I44, NUMINT) = goto(I45, NUMINT) = goto(I52, NUMINT) = goto(I55, NUMINT)

factor → NUMINT

I32 = goto(I22, NUMFLOAT) = goto(I23, NUMFLOAT) = goto(I33,

NUMFLOAT) = goto(I34, NUMFLOAT) = goto(I40, NUMFLOAT) = goto(I44, NUMFLOAT) = goto(I45, NUMFLOAT) = goto(I52, NUMFLOAT) = goto(I55, NUMFLOAT)

factor → NUMFLOAT

I33 = goto(I22, LPAR) = goto(I33, LPAR) = goto(I34, LPAR) = goto(I40, LPAR) = goto(I44, LPAR) = goto(I45, LPAR) = goto(I52, LPAR) = goto(I55, LPAR)

factor → LPAR exp RPARexp → exp OP1 term

exp → termterm → term OP2 factor

Trang 21

term → factorfactor → IDfactor → NUMINTfactor → NUMFLOATfactor → LPAR exp RPARfactor → OP1 factor

I34 = goto(I22, OP1) = goto(I23, OP1) = goto(I33, OP1) = goto(I34, OP1) = goto(I40, OP1) = goto(I44, OP1) = goto(I45, OP1) = goto(I52, OP1) = goto(I55, OP1)

factor → OP1 factorfactor → ID

factor → NUMINTfactor → NUMFLOATfactor → LPAR exp RPARfactor → OP1 factor

Trang 22

exp → exp OP1 termexp → term

term → term OP2 factorterm → factor

factor → IDfactor → NUMINTfactor → NUMFLOATfactor → LPAR exp RPARfactor → OP1 factor

I41 = goto(I23, bt4)

bt2 → bt4

bt4 → bt4 RELOP exp

I42 = goto(I23, exp) = goto(I52, exp)

factor → IDfactor → NUMINTfactor → NUMFLOATfactor → LPAR exp RPARfactor → OP1 factor

I45 = goto(I28, OP2) = goto(I56, OP2)

term → term OP2 factorfactor → ID

factor → NUMINTfactor → NUMFLOATfactor → LPAR exp RPARfactor → OP1 factor

I46 = goto(I33, exp)

Trang 23

factor → LPAR exp RPAR

exp → exp OP1 term

if → IF LPAR bieu_thuc RPAR body_ if

body_ if→ BEGIN lenh_ if END

factor → LPAR exp RPAR

factor → OP1 factor

Trang 24

factor → LPAR exp RPAR

factor → OP1 factor

I56 = goto(I44, term)

exp → exp OP1 term

term → term OP2 factor

I57 = goto(I45, factor)

term → term OP2 factor

I58 = goto(I46, RPAR) = goto(I54, RPAR)

factor → LPAR exp RPAR

Trang 25

body → BEGIN ct END

if → IF LPAR bieu_thuc RPAR body_ if

exp → exp OP1 term

I65 = goto(I60, lenh_ if)

body_ if → BEGIN lenh_ if END

I66 = goto(I60, ct) = goto(I70, ct) = goto(I71, ct)

if → IF LPAR bieu_thuc RPAR body_ if

I71 = goto(I68, SEMI)

ct → var SEMI ct

ct → var SEMI

Trang 26

pbghep → BEGIN lenh END

body → BEGIN ct END

if → IF LPAR bieu_thuc RPAR body_ if

I72 = goto(I70, lenh_ ì)

TÀI LIỆU THAM KHẢO

1 Bài giảng Chương trình dịch – Phan Thị Thu Hồng

2 Tài liệu trực tuyến

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

HÌNH ẢNH LIÊN QUAN

ĐỒ THỊ CHUYỂN - Tiểu luận môn chương trình dịch Viết trình biên dịch để dịch 1 đoạn chương trình
ĐỒ THỊ CHUYỂN (Trang 3)

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