将 .py 和 .pyi 后缀名改为了 .vp 和 .vpi 后缀名

This commit is contained in:
2026-07-30 16:33:56 +08:00
parent f79c8ca643
commit cfc30d735c
322 changed files with 246 additions and 31772 deletions

42
Test/G4/App/caller1.vp Normal file
View File

@@ -0,0 +1,42 @@
import t
import stdio
import stdlib
import memhub
from g4node import G4Node, new_g4node
# ============================================================
# caller1: 导入 G4Node 并直接访问 Next 字段(不通过访问器)
#
# 模拟 TransPyV/HandlesExprCall.py 的情况:
# 直接访问 n.Next 触发 GEP 指令,若 stub 字段缺失则 GEP 越界
# ============================================================
def caller1_make_chain(pool: memhub.MemBuddy | t.CPtr) -> G4Node | t.CPtr:
"""创建 3 节点链表,直接访问 Next 字段"""
a: G4Node | t.CPtr = new_g4node(pool)
b: G4Node | t.CPtr = new_g4node(pool)
c: G4Node | t.CPtr = new_g4node(pool)
if a is None or b is None or c is None:
return None
a.IntVal = 100
b.IntVal = 200
c.IntVal = 300
# 直接访问 Next 字段(不通过 g4node_set_next 访问器)
a.Next = b
b.Next = c
return a
def caller1_sum_chain(head: G4Node | t.CPtr) -> t.CInt:
"""遍历链表求和,直接访问 Next 字段"""
if head is None:
return 0
total: t.CInt = head.IntVal
cur: G4Node | t.CPtr = head
# 直接访问 Next 字段(不通过 g4node_get_next 访问器)
while cur.Next is not None:
cur = cur.Next
total = total + cur.IntVal
return total