BIỂU THỨC KIỂU (type expressions)

Một phần của tài liệu ngôn ngữ lập trình và chương trình dịch (Trang 93 - 94)

- Stack lưu một chuỗi s0X1s1X 2s2 X msm trong đó sm nằm trên đỉnh Stack

1.BIỂU THỨC KIỂU (type expressions)

Kiểu của một cấu trúc ngôn ngữ được biểu thị bởi “biểu thức kiểu”. Một biểu thức kiểu có thể là một kiểu cơ bản hoặc được xây dựng từ các kiểu cơ bản theo một số toán tử nào đó.

Ta xét một lớp các biểu thức kiểu như sau: 1) Kiểu cơ bản:

Gồm boolean, char, interger, real. Có các kiểu cơ bản đặc biệt là type_error

(để trả về một cấu trúc bị lỗi kiểu), void (biểu thị các cấu trúc không cần xác định kiểu như câu lệnh).

2) Kiểu hợp thành:

+ Mảng: Nếu T là một biểu thức kiểu thì array(I,T) là một biểu thức kiểu đối với một mảng các phần tử kiểu TI là tập các chỉ số.

Ví dụ: trong ngôn ngữ Pascal khai báo: var A: array[1..10] of interger; sẽ xác định kiểu của A là array(1..10,interger)

+ Tích của biểu thức kiểu: là một biểu thức kiểu. Nếu T1T2 là các kiểu biểu thức kiểu thì tích Đề các của T1xT2 là một biểu thức kiểu.

+ Bản ghi: Kiểu của một bản ghi chính là biểu thức kiểu được xây dựng từ các kiểu của các trường của nó.

Ví dụ trong ngôn ngữ Pascal:

type row=record

address: interger;

lexeme: array[1..15] of char; end;

var table: array[1..101] of row;

Như vậy một biến của row thì tương ứng với một biểu thức kiểu là:

record((address x interger) x (lexeme x array(1..15,char)))

+ Con trỏ: Giả sử T là một biểu thức kiểu thì pointer(T) là một biểu thị một biểu thức kiểu xác định kiểu cho con trỏ của một đối tượng kiểu T.

Ví dụ, trong ngôn ngữ Pascal: var p: ^row thì p có kiểu là pointer(row)

+ Hàm: Một hàm là một ánh xạ từ các phần tử của một tập vào một tập khác. Kiểu một hàm là ánh xạ từ một kiểu miền D vào một kiểu phạm vi R. Biểu thức kiểu cho một hàm như vậy sẽ được ký hiệu là D → R.

Ví dụ trong ngôn ngữ Pascal, một hàm khai báo như sau: function f(a,b:interger): ^interger;

có kiểu miền là interger x interger và kiểu phạm vi là pointer(interger). Và như vậy biểu thức kiểu xác định kiểu cho hàm đó là:

interger x interger → pointer(interger)

Một phần của tài liệu ngôn ngữ lập trình và chương trình dịch (Trang 93 - 94)