from __future__ import annotations import json import struct from typing import Any def SerializeSymbolTable(SymbolTable: dict[str, Any]) -> bytes: """将符号表序列化为二进制格式 格式: - 4字节: JSON数据长度(小端序) - N字节: JSON数据(UTF-8编码) Args: SymbolTable: 符号表字典 Returns: 二进制字节数据 """ JsonData: bytes = json.dumps(SymbolTable, ensure_ascii=False).encode('utf-8') length: int = len(JsonData) # 使用4字节小端序整数表示长度 header: bytes = struct.pack(' dict[str, Any]: """从二进制数据反序列化符号表 Args: data: 二进制字节数据 Returns: 符号表字典 """ if len(data) < 4: raise ValueError("Invalid symbin file: data too short") # 解析4字节长度头(小端序) length: int = struct.unpack(' None: """初始化SymbolFile对象 Args: file: 文件路径 string: 代码字符串 type: 文件类型,支持"c"或"py" encoding: 文件编码 """ self.FilePath: str | None = file self.CodeString: str | None = string self.FileType: str | None = type self.encoding: str = encoding self.symbols: dict[str, Any] = {}