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拡張ワード追加言語(3rdワードで明示)

優雅な劣化: ビット損失時に上位系統に収束 → 最終的に 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 01001FuncLitラムダ/匿名関数
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ワード