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

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

@@ -328,7 +328,7 @@ class PythonParserMixin:
EnumNode.Name = ClassName
EnumNode.IsEnum = True
EnumNode.set('file', '<stdin>')
self.SymbolTable[ClassName] = EnumNode
self.SymbolTable.insert(ClassName, EnumNode)
# 注册 enum 成员
for item in node.body:
@@ -341,9 +341,9 @@ class PythonParserMixin:
MemberNode.EnumName = ClassName
MemberNode.library_name = None
MemberNode.IsEnumMember = True
self.SymbolTable[MemberName] = MemberNode
self.SymbolTable[f"{ClassName}.{MemberName}"] = MemberNode
self.SymbolTable[f"{ClassName}_{MemberName}"] = MemberNode
self.SymbolTable.insert(MemberName, MemberNode)
self.SymbolTable.insert(f"{ClassName}.{MemberName}", MemberNode)
self.SymbolTable.insert(f"{ClassName}_{MemberName}", MemberNode)
continue
@@ -397,14 +397,14 @@ class PythonParserMixin:
StructNode.set('file', '<stdin>')
StructNode.set('IsAnonymous', IsAnonymous)
StructNode.set('IsCpythonObject', IsCpythonObject)
self.SymbolTable[ClassName] = StructNode
self.SymbolTable.insert(ClassName, StructNode)
elif isinstance(node, ast.FunctionDef):
FuncName = node.name
FuncNode = CTypeInfo()
FuncNode.Name = FuncName
FuncNode.IsFunction = True
FuncNode.set('file', '<stdin>')
self.SymbolTable[FuncName] = FuncNode
self.SymbolTable.insert(FuncName, FuncNode)
elif isinstance(node, ast.AnnAssign):
if isinstance(node.target, ast.Name):
VarName = node.target.id
@@ -443,7 +443,7 @@ class PythonParserMixin:
var_node.IsVariable = True
var_node.set('IsPtr', IsPtr)
var_node.set('file', '<stdin>')
self.SymbolTable[VarName] = var_node
self.SymbolTable.insert(VarName, var_node)
except Exception as e:
print(f'Warning: Failed to parse Python file {FilePath}: {e}')