可用的回归测试通过的标准版本

This commit is contained in:
2026-06-18 00:39:43 +08:00
parent bffb0cb6b7
commit e02c867edf
365 changed files with 22562 additions and 24532 deletions

58
lib/Shell/Serializer.py Normal file
View File

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