Semantic analysis là gì?

Noun Complier
Phân tích ngữ nghĩa

Phân tích ngữ nghĩa (semantic analysis) là một giai đoạn trong trình biên dịch, có nhiệm vụ kiểm tra tính nhất quán ngữ nghĩa (semantic) của mã. Nó sử dụng cây cú pháp (syntax tree) của giai đoạn phân tích cú pháp (syntax analysis) cùng với symbol table để xác minh rằng mã nguồn (source code) đã cho là nhất quán về mặt ngữ nghĩa. Nó cũng kiểm tra xem mã có truyền đạt ý nghĩa thích hợp hay không.

Trình phân tích ngữ nghĩa (semantic analyzer) sẽ kiểm tra các kiểu dữ liệu không khớp, toán hạng (operand) không tương thích, một hàm được gọi với các đối số (argument) không phù hợp, một biến (variable) không được khai báo, v.v.

Các chức năng của giai đoạn phân tích ngữ nghĩa (semantic analysis) là:

  • Giúp bạn lưu trữ thông tin kiểu dữ liệu được thu thập và lưu nó trong symbol table hoặc cây cú pháp
  • Cho phép bạn thực hiện kiểm tra kiểu (type checking)
  • Trong trường hợp kiểu dữ liệu không khớp, khi không có quy tắc sửa kiểu dữ liệu chính xác đáp ứng phép toán mong muốn, lỗi ngữ nghĩa (semantic error) được hiển thị
  • Thu thập thông tin kiểu dữ liệu và kiểm tra tính tương thích kiểu dữ liệu (type compatibility)
  • Kiểm tra xem ngôn ngữ nguồn (source language) có cho phép các toán hạng (operand) hay không

Ví dụ:


float x = 20.2;
float y = x*30;

Trong đoạn mã trên, trình phân tích ngữ nghĩa sẽ ép kiểu (typecasting) số integer 30 thành float 30.0 trước khi nhân (multiplication)

Learning English Everyday