TheGiai đoạn cách đọc kèo bóng đábao gồm hai phần:
Thecách đọc kèo bóng đáđược xác định tronggram.y
vàScan.l
Được xây dựng bằng Công cụ UNIXBisonvàFlex.
TheQuy trình chuyển đổiCác sửa đổi và tăng cường cho các cấu trúc dữ liệu được trả về bởi trình cách đọc kèo bóng đá.
Trình cách đọc kèo bóng đá phải kiểm tra chuỗi truy vấn (đến dưới dạng văn bản đơn giản) cho cú pháp hợp lệ. Nếu cú pháp đúng aparse Treeđược xây dựng và bàn giao; nếu không một lỗi được trả về. Trình cách đọc kèo bóng đá và Lexer được triển khai bằng Công cụ UNIX nổi tiếngBisonvàFlex.
TheLexerđược xác định trong tệpScan.l
và chịu trách nhiệm nhận dạngĐịnh danh, TheTừ khóa SQLvv. Đối với mọi từ khóa hoặc định danh được tìm thấy, Amã thông báođược tạo và trao cho trình cách đọc kèo bóng đá.
Trình cách đọc kèo bóng đá được xác định trong tệpgram.y
và bao gồm một tập hợpQuy tắc ngữ cách đọc kèo bóng đávàActionđược thực thi bất cứ khi nào một quy tắc được sa thải. Mã của các hành động (thực sự là mã C) được sử dụng để xây dựng cây cách đọc kèo bóng đá.
TệpScan.l
được chuyển đổi thành tệp nguồn CScan.c
Sử dụng chương trìnhFlexvàgram.y
được chuyển đổi thànhgram.c
sử dụngBison. Sau khi các phép biến đổi này diễn ra, một trình biên dịch C bình thường có thể được sử dụng để tạo trình cách đọc kèo bóng đá. Không bao giờ thực hiện bất kỳ thay đổi nào đối với các tệp C được tạo vì chúng sẽ được ghi đè vào lần tiếp theoFlexhoặcBisonđược gọi.
Các biến đổi và biên dịch được đề cập thường được thực hiện tự động bằng cách đọc kèo bóng đá sử dụngMakefilesĐược vận chuyển vớiPostgreSQL13660_13683
13704_13732Bisonhoặc các quy tắc ngữ cách đọc kèo bóng đá được đưa ra tronggram.y
sẽ vượt quá phạm vi của hướng dẫn này. Có nhiều sách và tài liệu liên quan đếnFlexvàBison. Bạn nên quen thuộc vớiBisonTrước khi bạn bắt đầu nghiên cứu ngữ cách đọc kèo bóng đá được đưa ra tronggram.y
Nếu không bạn sẽ không hiểu điều gì xảy ra ở đó.
Giai đoạn cách đọc kèo bóng đá tạo một cây phân tích chỉ bằng cách sử dụng các quy tắc cố định về cấu trúc cú pháp của SQL. Nó không thực hiện bất kỳ tra cứu nào trong các danh mục hệ thống, vì vậy không có khả năng hiểu các ngữ nghĩa chi tiết của các hoạt động được yêu cầu. Sau khi trình cách đọc kèo bóng đá hoàn thành,Quy trình chuyển đổilấy cây được trình cách đọc kèo bóng đá làm đầu vào và giải thích ngữ nghĩa cần thiết để hiểu bảng, chức năng và toán tử nào được tham chiếu bởi truy vấn. Cấu trúc dữ liệu được xây dựng để thể hiện thông tin này được gọi làTruy vấn cây.
Lý do tách cách đọc kèo bóng đá thô với cách đọc kèo bóng đá ngữ nghĩa là việc tra cứu danh mục hệ thống chỉ có thể được thực hiện trong một giao dịch và chúng tôi không muốn bắt đầu giao dịch ngay khi nhận được chuỗi truy vấn. Giai đoạn cách đọc kèo bóng đá thô là đủ để xác định các lệnh điều khiển giao dịch (Bắt đầu
, rollback
, v.v.), và sau đó chúng có thể được thực hiện chính xác mà không cần cách đọc kèo bóng đá thêm. Khi chúng ta biết rằng chúng ta đang xử lý một truy vấn thực tế (chẳng hạn nhưChọn
hoặcCập nhật
), bắt đầu giao dịch là ổn nếu chúng tôi chưa có. Chỉ sau đó, quá trình chuyển đổi mới có thể được gọi.
Cây truy vấn được tạo ra bởi quá trình chuyển đổi có cấu trúc tương tự như cây cách đọc kèo bóng đá thô ở hầu hết các nơi, nhưng nó có nhiều sự khác biệt về chi tiết. Ví dụ: Afunccall
Node in the Parse Tree đại diện cho một cái gì đó trông giống như một cuộc gọi chức năng. Điều này có thể được chuyển đổi thành mộtfuncexpr
hoặcAggref
16202_16421
Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không phù hợp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.