Hướng dẫn symbol table implementation in python - triển khai bảng biểu tượng trong python

Mã nguồn: lib/symtable.py Lib/symtable.py


Các bảng biểu tượng được tạo bởi trình biên dịch từ AST ngay trước đó bytecode được tạo. Bảng ký hiệu chịu trách nhiệm tính toán phạm vi của mọi định danh trong mã. symtable cung cấp một giao diện để kiểm tra các bảng này.

Tạo bảng biểu tượng

________ 2 ________ 3 (mã, tên tệp, compile_type) ¶(code, filename, compile_type)

Trả lại Toplevel SymbolTable cho mã nguồn Python. Tên tệp là tên của tệp chứa mã. compile_type giống như đối số chế độ thành compile().

Kiểm tra bảng biểu tượng

Lớp ________ 2 ________ 7¶

Một bảng không gian tên cho một khối. Các nhà xây dựng không công khai.

________số 8()¶()

Trả về loại của bảng ký hiệu. Các giá trị có thể là 'class', symtable0 và symtable1.

________ 12 ()()

Trả lại số nhận dạng bảng.

________ 13 ()()

Trả lại tên bảng. Đây là tên của lớp nếu bảng dành cho một lớp, tên của hàm nếu bảng dành cho hàm hoặc symtable4 nếu bảng là toàn cầu (symtable5 trả về symtable0).

________ 17 ()()

Trả về số của dòng đầu tiên trong khối Bảng này biểu thị.

________ 18 ()()

Trả lại symtable9 Nếu người dân địa phương trong bảng này có thể được tối ưu hóa.

________ 20 ()()

Trả về symtable9 Nếu khối là một lớp hoặc hàm lồng nhau.

________ 22 ()()

Trả về symtable9 Nếu khối có các không gian tên lồng nhau trong đó. Chúng có thể thu được với symtable.4.

________ 25 ()()

Trả về một đối tượng xem chứa tên của các ký hiệu trong bảng. Xem tài liệu của các đối tượng xem.documentation of view objects.

________ 26 (tên)(name)

Tên tra cứu trong bảng và trả về một thể hiện symtable.7.

________ 28 ()()

Trả về danh sách các phiên bản symtable.7 cho các tên trong bảng.

________ 30 ()()

Trả về một danh sách các bảng biểu tượng lồng nhau.

Lớp ________ 2 ________ 32¶

Một không gian tên cho một hàm hoặc phương thức. Lớp này kế thừa SymbolTable.

________ 34 ()()

Trả về một tuple chứa tên của các tham số cho hàm này.

________ 35 ()()

Trả về một tuple chứa tên của người dân địa phương trong chức năng này.

________ 36 ()()

Trả về một tuple chứa tên của Globals trong chức năng này.

________ 37 ()()

Trả về một tuple có chứa tên của các phi địa điểm trong chức năng này.

________ 38 ()()

Trả về một tuple chứa tên của các biến miễn phí trong hàm này.

Lớp ________ 2 ________ 40¶

Một không gian tên của một lớp học. Lớp này kế thừa SymbolTable.

________ 42 ()()

Trả về một tuple chứa tên của các phương thức được khai báo trong lớp.

Lớp ________ 2 ________ 44¶

Một mục trong một SymbolTable tương ứng với một định danh trong nguồn. Các nhà xây dựng không công khai.

________ 13 ()()

Trả lại tên bảng. Đây là tên của lớp nếu bảng dành cho một lớp, tên của hàm nếu bảng dành cho hàm hoặc symtable4 nếu bảng là toàn cầu (symtable5 trả về symtable0).

________ 17 ()()

Trả về số của dòng đầu tiên trong khối Bảng này biểu thị.

________ 18 ()()

Trả lại symtable9 Nếu người dân địa phương trong bảng này có thể được tối ưu hóa.

________ 20 ()()

Trả về symtable9 Nếu khối là một lớp hoặc hàm lồng nhau.

________ 22 ()()

Trả về symtable9 Nếu khối có các không gian tên lồng nhau trong đó. Chúng có thể thu được với symtable.4.

________ 25 ()()

Trả về một đối tượng xem chứa tên của các ký hiệu trong bảng. Xem tài liệu của các đối tượng xem.

________ 26 (tên)()

Tên tra cứu trong bảng và trả về một thể hiện symtable.7.

________ 28 ()()

Trả về danh sách các phiên bản symtable.7 cho các tên trong bảng.

________ 30 ()()

Trả về một danh sách các bảng biểu tượng lồng nhau.

Lớp ________ 2 ________ 32¶

Một không gian tên cho một hàm hoặc phương thức. Lớp này kế thừa SymbolTable.()

________ 34 ()

Trả về một tuple chứa tên của các tham số cho hàm này.()

________ 35 ()

Trả về một tuple chứa tên của người dân địa phương trong chức năng này.()

________ 36 ()

Trả về một tuple chứa tên của Globals trong chức năng này.

________ 37 ()

>>> table = symtable.symtable("def some_func(): pass", "string", "exec")
>>> table.lookup("some_func").is_namespace()
True

Trả về một tuple có chứa tên của các phi địa điểm trong chức năng này.

________ 38 ()()

Trả về một tuple chứa tên của các biến miễn phí trong hàm này.

Lớp ________ 2 ________ 40¶()

Một không gian tên của một lớp học. Lớp này kế thừa SymbolTable.

Làm thế nào để bạn thực hiện một bảng ký hiệu?

Bảng biểu tượng có thể được thực hiện trong danh sách không theo thứ tự nếu trình biên dịch được sử dụng để xử lý lượng dữ liệu nhỏ ...
Danh sách tuyến tính (sắp xếp hoặc chưa được phân loại) ..
Bàn băm ..
Cây tìm kiếm nhị phân ..

Bảng biểu tượng trong Python là gì?

Bảng ký hiệu là một cấu trúc dữ liệu được duy trì và xây dựng bởi trình biên dịch Python có chứa tất cả các thông tin cần thiết về từng định danh được tìm thấy trong mã nguồn của chương trình.Dữ liệu này liên quan đến loại, giá trị, mức độ phạm vi của một định danh và vị trí của nó (còn được gọi là ký hiệu).a data structure maintained and constructed by the Python compiler that contains all of the essential information about each identifier found in the source code of the program. This data pertains to an identifier's type, value, scope level, and its position (also called symbol).

Việc thực hiện bảng ký hiệu dựa trên là gì?

Câu trả lời.1- Danh sách tự tổ chức.Self Organizing List.

Việc thực hiện bảng biểu tượng nào là hiệu quả nhất?

Trong sơ đồ băm, hai bảng được duy trì - bảng băm và bảng ký hiệu và là phương pháp được sử dụng phổ biến nhất để thực hiện các bảng ký hiệu.symbol table and are the most commonly used method to implement symbol tables.