AST Edge 是将**编程语言的 AST(Abstract Syntax Tree)**表示为 GEUL 图的 Edge 类型。

特性说明
多语言支持6位表达64种语言
通用 AST 节点跨语言相同概念使用相同代码
谱系分类支持优雅退化(graceful degradation)
PathGEUL 集成包含 GEUL 图遍历语言

数据包结构

1st WORD (16位)
┌─────────────────────┬────────────────────┐
│       Prefix        │       语言         │
│       10bit         │        6bit        │
└─────────────────────┴────────────────────┘

2nd WORD (16位)
┌─────────────────────────┬───────────────────┐
│     AST 节点类型         │       保留        │
│         8bit            │       8bit        │
└─────────────────────────┴───────────────────┘

3rd WORD (16位)
┌─────────────────────────────────────────────┐
│                  Edge TID                   │
│                   16bit                     │
└─────────────────────────────────────────────┘

4th+ WORD: 子节点 TID(可变,以终止标记 0x0000 结束)
字段大小说明
Prefix1-10100001 000 001 (AST Edge)
语言11-166编程语言代码
AST 节点类型17-248节点种类(3+5 分割)
保留25-328未来扩展用(当前 0x00)
Edge TID33-4816此 Edge 的唯一标识符
子节点 TID49+16×N子节点引用

字数:最少3字(叶节点)~ 一般4-8字 ~ 无限制

语言代码(6位)

基于谱系分类。bit1-2为大分类(范式),bit3-6为具体语言。

系统/底层(00xxxx)

代码语言说明
000000Abstract所有语言的通用 AST
000001C系统语言原型
000010C++C 扩展
000011Rust现代系统
000100Go现代系统
000101Zig现代系统
000110Assembly最底层
000111D系统
001000Nim系统

应用/VM(01xxxx)

代码语言说明
010000JavaVM 系原型
010001C#.NET
010010KotlinJVM
010011ScalaJVM+函数式
010100SwiftApple
010101DartFlutter
010110GroovyJVM
010111ClojureJVM+Lisp

脚本/动态(10xxxx)

代码语言说明
100000Python通用脚本原型
100001JavaScriptWeb
100010TypeScriptJS+类型
100011Ruby通用
100100PHPWeb 服务器
100101Lua嵌入式
100110Perl文本处理
100111R统计
101000Julia科学计算
101001MATLAB数值分析

声明式/函数式/其他(11xxxx)

代码语言说明
110000SQL查询
110001Haskell纯函数式
110010OCamlML 系
110011F#.NET 函数式
110100ElixirBEAM
110101ErlangBEAM
110110ShellBash/Zsh
110111PowerShellWindows
111000WASM字节码
111001LLVM IR中间表示
111010HTML标记
111011CSS样式
111100JSON数据
111101YAML数据
111110PathGEULGEUL 图遍历语言
111111扩展字额外语言(第3字中指定)

优雅退化: 位丢失时向上级谱系收敛 → 最终回退到 Abstract(000000)。

AST 节点类型(8位)

3位大分类 + 5位细分类型。

大分类

代码大分类说明
000Declaration声明(函数、变量、类型)
001Statement语句(控制语句、循环语句)
010Expression表达式(运算、调用)
011Type类型表达
100Pattern模式匹配
101Modifier修饰符(访问控制、async)
110Structure结构(块、模块)
111Language-specific语言特有节点

Declaration (000xxxxx)

代码节点GoPythonC
000 00000FuncDeclFuncDeclFunctionDefFunctionDecl
000 00001VarDeclGenDecl(var)AssignVarDecl
000 00010ConstDeclGenDecl(const)-VarDecl(const)
000 00011TypeDeclTypeSpec-TypedefDecl
000 00100StructDeclStructTypeClassDefRecordDecl
000 00101InterfaceDeclInterfaceTypeClassDef(ABC)-
000 00110EnumDecl-EnumEnumDecl
000 00111ParamDeclFieldargParmVarDecl
000 01000MethodDeclFuncDecl(recv)FunctionDefCXXMethodDecl
000 01001ImportDeclImportSpecImport#include
000 01010PackageDeclpackage--
000 01011FieldDeclField-FieldDecl
000 01100LabelDeclLabeledStmt-LabelDecl

Statement (001xxxxx)

代码节点含义
001 00000IfStmt条件语句
001 00001ForStmtfor 循环
001 00010RangeStmt迭代器循环
001 00011WhileStmtwhile 循环
001 00100SwitchStmtswitch/match
001 00101CaseClausecase 子句
001 00110ReturnStmt返回
001 00111BreakStmt跳出
001 01000ContinueStmt继续
001 01001GotoStmtgoto
001 01010BlockStmt块 { }
001 01011ExprStmt表达式语句
001 01100AssignStmt赋值
001 01101DeclStmt声明语句
001 01110TryStmt异常处理
001 01111ThrowStmt抛出异常
001 10000DeferStmtdefer
001 10001GoStmtgo
001 10010SelectStmtselect
001 10011WithStmtwith
001 10100AssertStmtassert
001 10101PassStmtpass

Expression (010xxxxx)

代码节点含义
010 00000BinaryExpr二元运算
010 00001UnaryExpr一元运算
010 00010CallExpr函数调用
010 00011IndexExpr索引访问 a[i]
010 00100SliceExpr切片 a[i:j]
010 00101SelectorExpr字段访问 a.b
010 00110Ident标识符
010 00111BasicLit基本字面量
010 01000CompositeLit复合字面量
010 01001FuncLitLambda/匿名函数
010 01010ParenExpr括号 (a)
010 01011StarExpr指针 *a
010 01100UnaryAddr取地址 &a
010 01101TypeAssertExpr类型断言
010 01110KeyValueExprkey: value
010 01111TernaryExpr三元运算
010 10000ListComp列表推导
010 10001DictComp字典推导
010 10010GeneratorExpr生成器
010 10011AwaitExprawait
010 10100YieldExpryield
010 10101SendExpr通道发送 <-
010 10110RecvExpr通道接收 <-ch

Type (011xxxxx)

代码节点含义
011 00000IdentType名称类型
011 00001PointerType指针 *T
011 00010ArrayType数组 [N]T
011 00011SliceType切片 []T
011 00100MapType映射 map[K]V
011 00101ChanType通道 chan T
011 00110FuncType函数类型
011 00111StructType结构体类型
011 01000InterfaceType接口类型
011 01001UnionType联合 A | B
011 01010OptionalType可选 T?
011 01011GenericType泛型 T[U]
011 01100TupleType元组 (A, B)

Pattern (100xxxxx)

代码节点含义
100 00000WildcardPattern_
100 00001IdentPattern名称绑定
100 00010LiteralPattern字面量匹配
100 00011TuplePattern元组 (a, b)
100 00100ListPattern列表 [a, b]
100 00101StructPattern结构体 {a, b}
100 00110OrPatterna | b
100 00111GuardPattern守卫条件

Modifier (101xxxxx)

代码节点含义
101 00000Publicpublic/exported
101 00001Privateprivate
101 00010Protectedprotected
101 00011Staticstatic
101 00100Constconst
101 00101Asyncasync
101 00110Volatilevolatile
101 00111Inlineinline
101 01000Virtualvirtual
101 01001Abstractabstract
101 01010Finalfinal

Structure (110xxxxx)

代码节点含义
110 00000File文件(顶层)
110 00001Module模块
110 00010Package
110 00011Namespace命名空间
110 00100Block
110 00101CommentGroup注释组
110 00110Comment注释
110 00111Directive指令 (#pragma)

Language-specific (111xxxxx)

各语言特有节点。32个余量。

PathGEUL (111110)

PathGEUL 是遍历 GEUL 图的查询语言。如同 XPath 遍历 XML,PathGEUL 遍历 GEUL 图。

当语言代码为 111110 时,8位 AST 节点类型被重新解释为查询运算符

代码运算XPath 对应说明
00000000Root/根节点
00000001Child/child直接子节点
00000010Descendant//所有后代
00000011Parent..父节点
00000100Ancestorancestor::所有祖先
00000101Siblingsibling::兄弟
00010000FilterType[type=…]类型过滤
00100000FilterProp[@prop=…]属性过滤
01000000Union|并集
01000001Intersect&交集

示例

Go 函数声明

func Add(a, b int) int {
    return a + b
}
AST Edge (FuncDecl):
  1st: [Prefix 10bit] [000100]       - Prefix + Go
  2nd: [000 00000] [00000000]        - FuncDecl + 保留
  3rd: [TID: 0x0010]                 - 此 Edge TID
  4th: [TID: 0x0011]                 - Name "Add"
  5th: [TID: 0x0012]                 - Params
  6th: [TID: 0x0013]                 - Results
  7th: [TID: 0x0014]                 - Body
  8th: [0x0000]                      - 终止

总计: 8字

Python 函数定义

def greet(name: str) -> str:
    return f"Hello, {name}"
AST Edge (FuncDecl):
  1st: [Prefix 10bit] [100000]       - Prefix + Python
  2nd: [000 00000] [00000000]        - FuncDecl + 保留
  3rd: [TID: 0x0020]                 - 此 Edge TID
  4th: [TID: 0x0021]                 - Name "greet"
  5th: [TID: 0x0022]                 - Params
  6th: [TID: 0x0023]                 - Returns
  7th: [TID: 0x0024]                 - Body
  8th: [0x0000]                      - 终止

总计: 8字

叶节点(标识符)

AST Edge (Ident):
  1st: [Prefix 10bit] [000100]       - Prefix + Go
  2nd: [010 00110] [00000000]        - Ident + 保留
  3rd: [TID: 0x0030]                 - 此 Edge TID
  4th: [0x0000]                      - 终止(无子节点)

总计: 4字