Symbol table là gì?

Phrase Complier

Symbol table là một cấu trúc dữ liệu (data structure) quan trọng được tạo và duy trì bởi trình biên dịch (compiler) để lưu trữ thông tin về sự xuất hiện của các thực thể khác nhau như tên biến (variable), tên hàm (function), đối tượng (object), lớp (class), interface, v.v. Symbol table được sử dụng cho cả phần analysis và phần synthesis của trình biên dịch.

Symbol table có thể phục vụ các mục đích sau tùy thuộc vào ngôn ngữ:

  • Lưu trữ tên (name) của tất cả các thực thể (entity)
  • Xác minh xem một biến đã được khai báo hay chưa.
  • Thực hiện type checking, bằng cách xác minh các phép gán (assignment) và biểu thức (expression) trong mã nguồn (source code) là đúng về mặt ngữ nghĩa.
  • Xác định scope của một tên (scope resolution).

Symbol table đơn giản là một bảng có thể là bảng tuyến tính (linear table) hoặc bảng băm (hash table). Nó duy trì một mục (entry) cho mỗi tên ở định dạng sau:


<symbol name,  type,  attribute>

Ví dụ, nếu một symbol table phải lưu trữ thông tin về khai báo biến (variable declaration) sau:


static int interest;

thì nó sẽ lưu trữ mục như:


<interest, int, static>

Learning English Everyday