AST Edge adalah tipe Edge untuk merepresentasikan AST (Abstract Syntax Tree) bahasa pemrograman dalam graf GEUL.

KarakteristikDeskripsi
Dukungan multi-bahasa6 bit untuk 64 bahasa
Node AST umumKonsep yang sama = kode yang sama
Klasifikasi berbasis rumpunMendukung graceful degradation
Integrasi PathGEULBahasa navigasi graf GEUL bawaan

Struktur Paket

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

2nd WORD (16 bit)
┌─────────────────────────┬───────────────────┐
│     Tipe node AST       │     Cadangan      │
│         8bit            │       8bit        │
└─────────────────────────┴───────────────────┘

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

4th+ WORD: TID anak (variabel, diakhiri marker 0x0000)
FieldBitUkuranDeskripsi
Prefix1-10100001 000 001 (AST Edge)
Bahasa11-166Kode bahasa pemrograman
Tipe node AST17-248Jenis node (pembagian 3+5)
Cadangan25-328Ekstensi masa depan (saat ini 0x00)
Edge TID33-4816ID unik Edge ini
TID anak49+16×NReferensi ke node anak

Jumlah word: minimal 3 (leaf) ~ umumnya 4-8 ~ tanpa batas

Kode Bahasa (6 bit)

Klasifikasi berbasis rumpun. bit1-2 kategori besar (paradigma), bit3-6 bahasa spesifik.

Sistem/level rendah (00xxxx)

KodeBahasaDeskripsi
000000AbstractAST umum semua bahasa
000001CPrototipe bahasa sistem
000010C++Ekstensi C
000011RustSistem modern
000100GoSistem modern
000101ZigSistem modern
000110AssemblyLevel terendah
000111DSistem
001000NimSistem

Aplikasi/VM (01xxxx)

KodeBahasaDeskripsi
010000JavaPrototipe VM
010001C#.NET
010010KotlinJVM
010011ScalaJVM+fungsional
010100SwiftApple
010101DartFlutter
010110GroovyJVM
010111ClojureJVM+Lisp

Skrip/dinamis (10xxxx)

KodeBahasaDeskripsi
100000PythonPrototipe skrip
100001JavaScriptWeb
100010TypeScriptJS+tipe
100011RubyUmum
100100PHPServer web
100101LuaEmbedded
100110PerlPemrosesan teks
100111RStatistik
101000JuliaKomputasi ilmiah
101001MATLABAnalisis numerik

Deklaratif/fungsional/lainnya (11xxxx)

KodeBahasaDeskripsi
110000SQLKueri
110001HaskellFungsional murni
110010OCamlKeluarga ML
110011F#.NET fungsional
110100ElixirBEAM
110101ErlangBEAM
110110ShellBash/Zsh
110111PowerShellWindows
111000WASMBytecode
111001LLVM IRRepresentasi intermediate
111010HTMLMarkup
111011CSSStyle
111100JSONData
111101YAMLData
111110PathGEULBahasa navigasi graf GEUL
111111EkstensiBahasa tambahan (ditentukan di word ke-3)

Graceful degradation: Jika bit hilang, konvergensi ke cabang atas → akhirnya fallback ke Abstract(000000).

Tipe Node AST (8 bit)

Pembagian 3-bit kategori besar + 5-bit subtipe.

Kategori Besar

KodeKategoriDeskripsi
000DeclarationDeklarasi (fungsi, variabel, tipe)
001StatementPernyataan (kondisi, loop)
010ExpressionEkspresi (operasi, panggilan)
011TypeEkspresi tipe
100PatternPattern matching
101ModifierPengubah (akses, async)
110StructureStruktur (blok, modul)
111Language-specificNode spesifik bahasa

Declaration (000xxxxx)

KodeNodeGoPythonC
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)

KodeNodeMakna
001 00000IfStmtPernyataan kondisi
001 00001ForStmtLoop for
001 00010RangeStmtLoop iterator
001 00011WhileStmtLoop while
001 00100SwitchStmtswitch/match
001 00101CaseClauseKlausa case
001 00110ReturnStmtReturn
001 00111BreakStmtBreak
001 01000ContinueStmtContinue
001 01001GotoStmtgoto
001 01010BlockStmtBlok { }
001 01011ExprStmtPernyataan ekspresi
001 01100AssignStmtPenugasan
001 01101DeclStmtPernyataan deklarasi
001 01110TryStmtPenanganan eksepsi
001 01111ThrowStmtPelemparan eksepsi
001 10000DeferStmtdefer
001 10001GoStmtgo
001 10010SelectStmtselect
001 10011WithStmtwith
001 10100AssertStmtassert
001 10101PassStmtpass

Expression (010xxxxx)

KodeNodeMakna
010 00000BinaryExprOperasi biner
010 00001UnaryExprOperasi uner
010 00010CallExprPemanggilan fungsi
010 00011IndexExprAkses indeks a[i]
010 00100SliceExprSlice a[i:j]
010 00101SelectorExprAkses field a.b
010 00110IdentIdentifier
010 00111BasicLitLiteral dasar
010 01000CompositeLitLiteral komposit
010 01001FuncLitLambda/fungsi anonim
010 01010ParenExprTanda kurung (a)
010 01011StarExprPointer *a
010 01100UnaryAddrAlamat &a
010 01101TypeAssertExprType assertion
010 01110KeyValueExprkey: value
010 01111TernaryExprOperasi terner
010 10000ListCompList comprehension
010 10001DictCompDict comprehension
010 10010GeneratorExprGenerator
010 10011AwaitExprawait
010 10100YieldExpryield
010 10101SendExprKirim ke channel <-
010 10110RecvExprTerima dari channel <-ch

Type (011xxxxx)

KodeNodeMakna
011 00000IdentTypeTipe bernama
011 00001PointerTypePointer *T
011 00010ArrayTypeArray [N]T
011 00011SliceTypeSlice []T
011 00100MapTypeMap map[K]V
011 00101ChanTypeChannel chan T
011 00110FuncTypeTipe fungsi
011 00111StructTypeTipe struct
011 01000InterfaceTypeTipe interface
011 01001UnionTypeUnion A | B
011 01010OptionalTypeOptional T?
011 01011GenericTypeGeneric T[U]
011 01100TupleTypeTuple (A, B)

Pattern (100xxxxx)

KodeNodeMakna
100 00000WildcardPattern_
100 00001IdentPatternBinding nama
100 00010LiteralPatternPencocokan literal
100 00011TuplePatternTuple (a, b)
100 00100ListPatternList [a, b]
100 00101StructPatternStruct {a, b}
100 00110OrPatterna | b
100 00111GuardPatternKondisi guard

Modifier (101xxxxx)

KodeNodeMakna
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)

KodeNodeMakna
110 00000FileFile (level atas)
110 00001ModuleModul
110 00010PackagePaket
110 00011NamespaceNamespace
110 00100BlockBlok
110 00101CommentGroupGrup komentar
110 00110CommentKomentar
110 00111DirectiveDirektif (#pragma)

Language-specific (111xxxxx)

Node spesifik tiap bahasa. 32 slot tersedia.

PathGEUL (111110)

PathGEUL adalah bahasa kueri untuk menavigasi graf GEUL. Seperti XPath menavigasi XML, PathGEUL menavigasi graf GEUL.

Saat kode bahasa 111110, 8-bit tipe node AST diinterpretasikan ulang sebagai operator kueri.

KodeOperasiPadanan XPathDeskripsi
00000000Root/Node akar
00000001Child/childAnak langsung
00000010Descendant//Semua keturunan
00000011Parent..Induk
00000100Ancestorancestor::Semua leluhur
00000101Siblingsibling::Saudara
00010000FilterType[type=…]Filter tipe
00100000FilterProp[@prop=…]Filter properti
01000000Union|Gabungan
01000001Intersect&Irisan

Contoh

Deklarasi Fungsi Go

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

Total: 8 word

Definisi Fungsi Python

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

Total: 8 word

Node Leaf (identifier)

AST Edge (Ident):
  1st: [Prefix 10bit] [000100]       - Prefix + Go
  2nd: [010 00110] [00000000]        - Ident + cadangan
  3rd: [TID: 0x0030]                 - TID Edge ini
  4th: [0x0000]                      - terminasi (tanpa anak)

Total: 4 word