Lexical analyzer là gì?

Noun Complier
lexer
Trình phân tích từ vựng

Các chương trình thực hiện phân tích từ vựng (lexical analysis) trong thiết kế trình biên dịch được gọi là trình phân tích từ vựng (lexical analyzer) hoặc lexer. Một lexer chứa tokenizer hoặc scanner. Nếu trình phân tích từ vựng (lexical analyzer) phát hiện ra rằng token không hợp lệ, nó sẽ tạo ra lỗi. Vai trò của trình phân tích từ vựng (lexical analyzer) trong thiết kế trình biên dịch là đọc các luồng ký tự từ mã nguồn, kiểm tra các token hợp lệ và chuyển dữ liệu đến trình phân tích cú pháp (syntax analyzer) khi nó yêu cầu.

Dưới đây là các nhiệm vụ của trình phân tích từ vựng (lexical analyzer):

  • Quét chương trình đầu vào
  • Xác định các token
  • Chèn token vào symbol table
  • Tạo ra lexical error nếu có lỗi

Đây là cách hoạt động của việc nhận dạng token trong thiết kế trình biên dịch.

  • "Get next token" là một lệnh được gửi từ trình phân tích cú pháp đến trình phân tích từ vựng.
  • Khi nhận được lệnh này, trình phân tích từ vựng sẽ quét đầu vào cho đến khi nó tìm thấy token tiếp theo.
  • Nó trả lại token cho trình phân tích cú pháp

Hãy xem xét đoạn mã sau được cung cấp cho trình phân tích từ vựng (lexical analyzer)


#include 
    int maximum(int x, int y) {
        // This will compare 2 numbers
        if (x > y)
            return x;
        else {
            return y;
        }
    }

Dưới đây là các token được tạo ra:

Lexeme Token
int Keyword
maximum Identifier
( Operator
int Keyword
x Identifier
, Operator
int Keyword
Y Identifier
) Operator
{ Operator
If Keyword

Xem thêm lexeme để hiểu bảng trên.

Learning English Everyday