Phân tích từ vựng (Bộ phân tích) trong Thiết kế trình biên dịch với ví dụ

Phân tích từ vựng là gì?

Phân tích từ vựng là giai đoạn đầu tiên trong quá trình thiết kế trình biên dịch. Lexer lấy mã nguồn đã sửa đổi được viết dưới dạng câu. Nói cách khác, nó giúp bạn chuyển đổi một chuỗi ký tự thành một chuỗi mã thông báo. Trình phân tích từ vựng chia cú pháp này thành một chuỗi mã thông báo. Nó loại bỏ bất kỳ khoảng trống hoặc nhận xét thừa nào được viết trong mã nguồn.

Các chương trình thực hiện Phân tích từ vựng trong thiết kế trình biên dịch được gọi là bộ phân tích từ vựng hoặc bộ từ vựng. Một từ vựng chứa mã thông báo hoặc máy quét. Nếu bộ phân tích từ vựng phát hiện mã thông báo không hợp lệ thì nó sẽ tạo ra lỗi. Vai trò của Trình phân tích từ vựng 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 mã thông báo hợp pháp và chuyển dữ liệu đến trình phân tích cú pháp khi nó yêu cầu.

Ví dụ

How Pleasant Is The Weather?

Xem ví dụ Phân tích từ vựng này; Ở đây, chúng ta có thể dễ dàng nhận ra có năm chữ Dễ chịu, Thế, Thời tiết, Là. Điều này rất tự nhiên đối với chúng ta vì chúng ta có thể nhận ra dấu phân cách, khoảng trống và ký hiệu dấu chấm câu.

 HowPl easantIs Th ewe ather?

Bây giờ, hãy kiểm tra ví dụ này, chúng ta cũng có thể đọc được điều này. Tuy nhiên, sẽ mất một chút thời gian vì dải phân cách được đặt ở Nơi Lẻ. Nó không phải là cái gì đó đến với bạn ngay lập tức.

Thuật ngữ cơ bản

Từ vị là gì?

Từ vị là một chuỗi các ký tự được đưa vào chương trình nguồn theo mẫu mã thông báo phù hợp. Nó không là gì ngoài một phiên bản của mã thông báo.

Mã thông báo là gì?

Mã thông báo trong thiết kế trình biên dịch là chuỗi ký tự đại diện cho một đơn vị thông tin trong chương trình nguồn.

Mẫu là gì?

Mẫu là mô tả được sử dụng bởi mã thông báo. Trong trường hợp từ khóa được sử dụng làm mã thông báo, mẫu là một chuỗi ký tự.

Máy phân tích từ vựng Archikiến trúc: Cách nhận dạng mã thông báo

Nhiệm vụ chính của phân tích từ vựng là đọc các ký tự đầu vào trong mã và tạo mã thông báo.

Máy phân tích từ vựng quét toàn bộ mã nguồn của chương trình. Nó xác định từng mã thông báo một. Máy quét thường chỉ được triển khai để tạo mã thông báo khi được trình phân tích cú pháp yêu cầu. Đây là cách nhận dạng mã thông báo trong thiết kế trình biên dịch-

Máy phân tích từ vựng Archikiến trúc
Máy phân tích từ vựng Archikiến trúc
  1. “Nhận mã thông báo tiếp theo” là 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.
  2. Khi nhận được lệnh này, bộ phân tích từ vựng sẽ quét đầu vào cho đến khi tìm thấy mã thông báo tiếp theo.
  3. Nó trả lại mã thông báo cho Trình phân tích cú pháp.

Trình phân tích từ vựng bỏ qua các khoảng trắng và nhận xét trong khi tạo các mã thông báo này. Nếu có bất kỳ lỗi nào, thì bộ phân tích từ vựng sẽ đối chiếu lỗi đó với tệp nguồn và số dòng.

Vai trò của máy phân tích từ vựng

Trình phân tích từ vựng thực hiện các nhiệm vụ được đưa ra dưới đây:

  • Giúp nhận dạng token vào bảng ký hiệu
  • Xóa khoảng trắng và nhận xét khỏi chương trình nguồn
  • Tương quan các thông báo lỗi với chương trình nguồn
  • Giúp bạn mở rộng các macro nếu nó được tìm thấy trong chương trình nguồn
  • Đọc các ký tự đầu vào từ chương trình nguồn

Ví dụ về Phân tích từ vựng, Mã thông báo, Không phải Mã thông báo

Hãy xem xét đoạn mã sau được đưa vào Lexical Analyzer

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

Ví dụ về Token được tạo

từ vựng Mã thông báo
int Từ khóa
tối đa Định danh
( Operator
int Từ khóa
x Định danh
, Operator
int Từ khóa
Y Định danh
) Operator
{ Operator
If Từ khóa

Ví dụ về Nontoken

Kiểu Các ví dụ
Bình luận // Điều này sẽ so sánh 2 số
Chỉ thị tiền xử lý #bao gồm
Chỉ thị tiền xử lý #xác định SỐ 8,9
Macro NUMS
Khoảng trắng /n /b /t

Lỗi từ vựng

Một chuỗi ký tự không thể quét vào bất kỳ mã thông báo hợp lệ nào là lỗi từ vựng. Sự thật quan trọng về lỗi từ vựng:

  • Lỗi từ vựng không phổ biến lắm nhưng cần được quản lý bằng máy scan
  • Sai chính tả về định danh, toán tử, từ khóa được coi là lỗi từ vựng
  • Nói chung, lỗi từ vựng xảy ra do sự xuất hiện của một số ký tự không hợp lệ, chủ yếu ở đầu mã thông báo.

Phục hồi lỗi trong Trình phân tích từ vựng

Dưới đây là một số kỹ thuật khắc phục lỗi phổ biến nhất:

  • Xóa một ký tự khỏi đầu vào còn lại
  • Ở chế độ hoảng loạn, các ký tự liên tiếp luôn bị bỏ qua cho đến khi chúng tôi đạt được mã thông báo được định dạng đúng
  • Bằng cách chèn ký tự còn thiếu vào đầu vào còn lại
  • Thay thế một ký tự bằng một ký tự khác
  • Hoán đổi hai ký tự nối tiếp

Trình phân tích từ vựng so với Trình phân tích cú pháp

Máy phân tích từ vựng Trình phân tích cú pháp
Quét chương trình đầu vào Thực hiện phân tích cú pháp
Xác định mã thông báo Tạo một bản trình bày trừu tượng của mã
Chèn mã thông báo vào Bảng ký hiệu Cập nhật các mục trong bảng ký hiệu
Nó tạo ra lỗi từ vựng Nó tạo ra một cây phân tích mã nguồn

Tại sao phải tách Lexical và Parser?

  • Sự đơn giản của thiết kế: Nó giúp đơn giản hóa quá trình phân tích từ vựng và phân tích cú pháp bằng cách loại bỏ các mã thông báo không mong muốn
  • Để nâng cao hiệu quả của trình biên dịch: Giúp bạn nâng cao hiệu quả của trình biên dịch
  • Chuyên môn hóa: các kỹ thuật chuyên ngành có thể được áp dụng để cải thiện quá trình phân tích từ vựng
  • Tính di động: chỉ máy quét yêu cầu giao tiếp với thế giới bên ngoài
  • Tính di động cao hơn: các đặc tính dành riêng cho thiết bị đầu vào được giới hạn trong từ vựng

Ưu điểm của phân tích từ vựng

  • Phương pháp phân tích từ vựng được sử dụng bởi các chương trình như trình biên dịch có thể sử dụng dữ liệu được phân tích cú pháp từ mã của lập trình viên để tạo mã thực thi nhị phân được biên dịch
  • Nó được các trình duyệt web sử dụng để định dạng và hiển thị một trang web với sự trợ giúp của dữ liệu được phân tích từ JavScript, HTML, CSS
  • Một bộ phân tích từ vựng riêng biệt giúp bạn xây dựng một bộ xử lý chuyên dụng và có khả năng hiệu quả hơn cho tác vụ

Nhược điểm của phân tích từ vựng

  • Bạn cần dành thời gian đáng kể để đọc chương trình nguồn và phân vùng nó dưới dạng mã thông báo
  • Một số biểu thức chính quy khá khó hiểu so với quy tắc PEG hoặc EBNF
  • Cần nhiều nỗ lực hơn để phát triển và gỡ lỗi từ vựng cũng như các mô tả mã thông báo của nó
  • Cần có thêm chi phí thời gian chạy để tạo bảng từ vựng và xây dựng mã thông báo

Tổng kết

  • Phân tích từ vựng là giai đoạn đầu tiên trong thiết kế trình biên dịch
  • Từ vị và Mã thông báo là chuỗi ký tự được đưa vào chương trình nguồn theo mẫu khớp của mã thông báo
  • Trình phân tích từ vựng được triển khai để quét toàn bộ mã nguồn của chương trình
  • Trình phân tích từ vựng giúp xác định token vào bảng ký hiệu
  • Một chuỗi ký tự không thể quét vào bất kỳ mã thông báo hợp lệ nào là lỗi từ vựng
  • Loại bỏ một ký tự khỏi đầu vào còn lại rất hữu ích Phương pháp khôi phục lỗi
  • Trình phân tích từ vựng quét chương trình đầu vào trong khi trình phân tích cú pháp thực hiện phân tích cú pháp
  • Nó giúp giảm bớt quá trình phân tích từ vựng và phân tích cú pháp bằng cách loại bỏ các mã thông báo không mong muốn
  • Trình phân tích từ vựng được trình duyệt web sử dụng để định dạng và hiển thị trang web với sự trợ giúp của dữ liệu được phân tích cú pháp từ JavsScript, HTML, CSS
  • Hạn chế lớn nhất của việc sử dụng bộ phân tích từ vựng là nó cần thêm chi phí thời gian chạy để tạo các bảng từ vựng và xây dựng các mã thông báo

Tóm tắt bài viết này với: