Ví dụ biểu diễn truy cập thuộc tính

Một phần của tài liệu (LUẬN văn THẠC sĩ) ứng dụng mô hình ngôn ngữ ngữ nghĩa thống kê trong gợi ý mã cho ngôn ngữ c (Trang 26 - 27)

Truy cập thuộc tính Nghĩa vị

book.id VAR(struct_type, var) ACCESS_POINT(point)

ATTR_ACCESS[int]

book.name VAR(struct_type, var) ACCESS_POINT(point)

ATTR_ACCESS[char]

book.address VAR(struct_type, var) ACCESS_POINT(point)

ATTR_ACCESS[char]

Ngôn ngữ C có khá nhiều toán tử như được chỉ ra ở [2], trong phạm vi của luận văn chỉ xét đến các toán tử với biểu diễn ngữ nghĩa tương ứng được chỉ ra trong bảng 3.1. Do ngôn ngữ C có hai từ khóa đặc biệt là struct và union, nên luận văn biểu diễn ngữ nghĩa theo một cách riêng (Ví dụ: KEYWORD[STRUCT]) để phân biệt với các từ khóa thông thường khác (Ví dụ: IF, FOR).

Khối lệnh là một khối bao gồm một tập các câu lệnh. Khi thực hiện chương trình, ta phân chia mã nguồn trong các khối để dễ nhận biết và xử lý. Khối lớn nhất bao gồm toàn bộ mã nguồn của một tệp là khối FILE, sau đó là khối Funtion, và cuối cùng là các khối FOR, WHILE, DO, SWITCH, IF. Cách biểu diễn nghĩa vị của sự bắt đầu cũng như kết thúc một khối lệnh được trình bày trong bảng 3.1.

3.1.2Phạm vi

Để có thể gợi ý chính xác từ tố tiếp theo chúng ta phải dựa vào phạm vi của từ tố hiện thời. Ví dụ, một biến có thể được khai báo toàn cục, hoặc cục bộ trong thân hàm (trong vòng lặp, ngoài vòng lặp, …). Chính vì thế, việc xác định và lưu trữ phạm vi của các biến là một vấn đề quan trọng. Do các biến toàn cục có thể được sử dụng tại bất kỳ vị trí nào sau khi nó được khai báo, vì thế ta chỉ xét các biến cục bộ trong thân hàm. Trong thân hàm, chúng ta có thể phân chia thành các khối và để phù hợp với ngôn ngữ C, thông tin của các khối được lưu trữ theo dạng quan hệ cha con, mỗi khối chứa các thông tin như sau:

 Định danh

 Khối cha

 Loại của khối (ví dụ: khối if, for, …)

 Danh sách các biến được khai báo

void test(int b){ int a = 0; for(int i = 0; i < 10; i++){ if(i == 5){ while(a < 5){ printf("value of a: %d\n", a); while(a < 5){ a++; char ch; } } } } }

Hình 3. 1. Ví dụ về phân chia khối trong thân hàm

Hình 3.1 biểu diễn một hàm test, có một đối số có kiểu dữ liệu int là b. Trong thân hàm gồm một vòng lặp for, một câu lệnh điều kiện if, và hai vòng lặp while. Các thông tin liên quan đến phạm vi được chỉ ra trong bảng 3.3. Chúng ta có thể thấy các biến b và a thuộc khối function. Khối function có khối cha là FILE và định danh là 1. Khối for có định danh là 2, khối cha là function và chứa khai báo biến i. Khối if có định danh là 3, khối cha là for và không chứa khai báo biến. Tương tự, khối while có định danh là 4, khối cha là if và không chứa khai báo biến. Cuối cùng, khối while có định danh là 5, khối cha là while và chứa một khai báo biến ch.

Một phần của tài liệu (LUẬN văn THẠC sĩ) ứng dụng mô hình ngôn ngữ ngữ nghĩa thống kê trong gợi ý mã cho ngôn ngữ c (Trang 26 - 27)

Tải bản đầy đủ (PDF)

(61 trang)