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

BÁO CÁO CHƯƠNG TRÌNH DỊCH Viết trình biên dịch để dịch một đoạn chương trình gồm các phát biểu sau ra dạng mã 3 địa chỉ

14 390 0
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 14
Dung lượng 166,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 sinh viên thực hiện Vũ Thị Ngọc Bích Lê Thị Dung Nhâm Thị Nhàn Nguyễn Thị Thảo Lớp : THC-K52 Đề tài 10: “Viết trình biên dịch để dịch một đoạn chương trình

Trang 1

BÁO CÁO CHƯƠNG TRÌNH DỊCH

Nhóm sinh viên thực hiện

Vũ Thị Ngọc Bích

Lê Thị Dung Nhâm Thị Nhàn Nguyễn Thị Thảo Lớp : THC-K52

Đề tài 10: “Viết trình biên dịch để dịch một đoạn chương trình gồm các

phát biểu sau ra dạng mã 3 địa chỉ:

 Phát biểu gán , for trong C

 Các phát biểu kết thúc bởi dấu ;

 Các biểu thức trong các phát biểu gồm các phép toán: +, -, *, /, ^ và các toán hạng gồm các định danh, hằng số thực và nguyên (kể các biểu thức) Độ ưu tiên các phép toán tương tự C Các phép toán kết hợp trái trừ phép ^ là kết hợp phải

 Thực hiện chuyển đổi kiểu dữ liệ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ừ trên xuống

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 2

Bài làm

I Phân tích từ vựng

1 Xác định các từ tố

1 Phép gán (ASG) : =; +=; -=; *=; /=; %=; >>=; <<=; &=; |=;

^=

- Gán giá trị trực tiếp: =

- Phép gán giá trị + them, - bớt: += , -=

- Phép gán giá trị nhân, chia, chia có dư: *=, /=, %=

- Phép gán bit shift: >>= , <<=

- Phép gán bít and, or, xor: &=, |=, ^=

2 Các phép toán số học : OP1: +,

-OP2: * , / , ^

3 Phép tăng, giảm (TG): ++,

4 Toán tử for

5 id

Định danh để đặt cho biến, hằng , kiểu hàm, được đặt theo quy định:

+/ Gồm chữ cái( letter), chữ số( degit) và dấu _ +/ Bắt đầu bằng chữ cái hoặc dấu _ không bắt đầu bằng chữ số

+/ Không trùng với từ khóa

6 TYPE

Trang 3

+/ Biểu diễn kiểu số nguyên int, short( số nguyên ngắn), long( số nguyên dài gấp đôi)

+/ Biểu diễn kiểu số thực float( 4 byte), double( số thực chính xác kép 8 byte)

7 Relop (các toán tử quan hệ): <; <=; ==; !=; > ; >=

8 Keyword( Các từ khóa) : void, goto, break, case, return,…

9 Các ký tự khác: , : ; { }! \ $ % # &

10 ws : blank, tab, newline 11.Chương trình: Lời chú thích, đoạn chương trình, hàm, câu lệnh

2 Xây dựng bảng phân tích Token

ASG :=, +=, -=, *=,/=,

%=, >>=, <<=, &=,

|=, ^=

‘:=’, ‘+=’, ‘-=’, ‘*=’, ‘/=’, ‘%=’,

‘>>=’, ‘<<=’, ‘&=’, ‘|=’, ‘^=’

AND && ‘&’’&’

RELOP1 >=,<=,>,< (‘>’’=’)|(‘<’’=’)|(‘>’)|(‘<’) LE, GE, LT, GT

ID a, b1, abcd (letter | ‘_’) | (letter | digits Index

Trang 4

| ‘_’)*

TYPE int, short, long,

float, double

‘int’, ‘short’, ‘long’, ’float’,

‘double’

NUM 1,33,10,490,… digit(digit)* Pointer to table

entry NUMREAL 1.2, 2E-3 ,0.5e+4 digit + digit + | digit + (.digit + |

)(‘e’|’E’)(‘+’|’- ‘|)digit +

Pointer to table entry

TG ++ , ‘- -‘, ‘++’

2 Xây dựng các sơ đồ chuyển tiếp

2.1 Sơ đồ chuyển tiếp các Token của phép gán

Trang 5

Start

2

6

11

4

9

14

18

3

5

8

7

1 0

1 2

1 3

1 5

1 7

1 9

1 6

2 0

other

=

=

=

=

<

<

other

other

other

>

>

=

=

-=

Trang 6

2 3 22

25

28

2 6

2 7

2 9

1 32

34

3 3

3 5

7

3 8

2 4

*

other

other

other

=

=

=

=

=

=

=

/

%

!

&

|

^

2 1

Trang 7

2.2 Sơ đồ chuyển tiếp cho Token id (Định danh)

2.3 Sơ đồ chuyển tiếp cho Token số nguyên và số thực

39

Letter or digit

4 5

44 4

3

4

2

4 8

4 7 46

digit

other

50

4 9

*

digit

-digit digit

other

*

digit E

5 1

other

*

Start

Trang 8

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

1 Văn phạm gia tố

sct (Luật 1)

stmtFOR LPAR btkht SEMI btkt SEMI bttg RPAR n_stmt (Luật 12)

exp->term exp’ (Luật 18)

exp’->OP1 term exp’| ɛ (Luật 19)

term → factor term’ (Luật 20)

2 Kí hiệu kết thúc

Trang 9

VOID MAIN BEGIN

END

SEMI

FOR

NOT

AND

OR

RELOP

ID

NUM

NUMF

LPAR

RPAR

OP1

OP2

COLON TYPE

TG

$

Trang 10

3 Kí hiệu chưa kết thúc

ct

body

tct

decl

n_stmt

stmt

n_id

pbgan

btkht

btkt

bttg

exp

term

exp’

term’

factor

4 Tính FIRST và FOLLOW

4.1 FIRST

first(S)= { VOID MAIN LPAR RPAR} first(ct) = { VOID MAIN LPAR RPAR} first(body)= {BEGIN}

first(tct)= {TYPE}

first(decl)= {TYPE}

first(n_id)= {ID}

Trang 11

first(n_stmt)= { BEGIN, FOR, ID} first(stmt)= {BEGIN, FOR, ID}

first(btkht)= {ID}

first(btkt)= {ID}

first(bttg)= {ID}

first(pbgan)= {ID}

first(factor)= {OP1, ID, NUM, NUMF} first(term)= { ID, NUM, NUMF, OP1} first(exp)= {ID, NUM, NUMF, OP1} first(exp’)=( ɛ, OP1)

first(term’)=( →ɛ ,OP2)

4.2 FOLLOW

Follow(s) = {$}

Follow(ct) = { $}

Follow(body) = {$}

Follow(tct)= {END, $}

Follow(decl) = {$}

Follow(n_id) = {SEMI, $}

Follow(n_stmt)= {END, $}

Follow(stmt) ={SEMI, $}

Follow(btkht) ={$, SEMI}

Follow(btkt) ={SEMI, $}

follow(pbgan)= {$}

Trang 12

follow(exp)={$}

follow(term’)={OP1, $}

follow(term)={OP1, $}

follow(factor)={OP2, $}

5 Bảng phân tích M

K

ý

hi

u

c

h

ư

a

k

ết

t

h

ú

c

Ký hiệu nhập

A

S

G

V

O

I

D

M

A

I

N

B

E

G

I

N

E N D

S E M I

F O R

N O T

A N D

O

R RE L O P

I

D NU M

N U M F

L P A R

R P A R

O P 1

O P 2

T Y P E

T

G CO L O N

$

B

o

d

y

3

T

D

e

cl

5

N

_

st

m

Trang 13

St

m

t

1

n

_i

d

6

P

b

g

a

n

1 7

B

tk

ht

1 3

B

tk

t

1 4

B

tt

g

1 5

E

x

p

1

T

er

m

2

F

a

ct

or

2

E

x

p’

1

 ɛ

Trang 14

m

m’

 ɛ

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

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