进行了优化,减少了上帝结构体的符号表占用

This commit is contained in:
2026-06-18 22:12:14 +08:00
parent d7b98cc9c5
commit 19f2787db0
32 changed files with 1245 additions and 1083 deletions

View File

@@ -506,8 +506,6 @@ class TransPyC:
# 从源代码直接预扫描 import 语句,注册别名
# 注意:不能依赖 Tree 中的 import 节点,因为 ParsePythonFile 可能修改了 AST
if not getattr(self.translator, '_ImportAliases', None):
self.translator._ImportAliases = {}
if not getattr(self.translator, '_ImportedModules', None):
self.translator._ImportedModules = set()
_prescan_tree = ast.parse(self.code)
@@ -519,14 +517,14 @@ class TransPyC:
continue
self.translator._ImportedModules.add(_name)
if _alias.asname:
self.translator._ImportAliases[_alias.asname] = _name
self.translator.SymbolTable.import_aliases[_alias.asname] = _name
elif isinstance(_node, ast.ImportFrom):
_module_name = _node.module
if _module_name and _module_name not in ('c', 't'):
self.translator._ImportedModules.add(_module_name)
for _alias in _node.names:
if _alias.asname:
self.translator._ImportAliases[_alias.asname] = f"{_module_name}.{_alias.name}"
self.translator.SymbolTable.import_aliases[_alias.asname] = f"{_module_name}.{_alias.name}"
# 解析代码以提取类型信息(用于 EmbeddedAssignments 和 TypedefAssignments
# 创建临时文件路径用于解析