Skip to content

Repository bahasa pemrograman Aiko, dibangun menggunakan LLVM-14 dan C++. Mendukung tipe data primitif, array, struct, fungsi, loop, dan ekspresi kompleks untuk pengembangan bahasa modern

Notifications You must be signed in to change notification settings

hammPa/aiko_cross_platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aiko Programming Language

Aiko adalah bahasa pemrograman eksperimental yang ditulis dengan C++ dan LLVM-14.
Bahasa ini dirancang untuk eksplorasi konsep compiler, interpreter, dan sistem tipe, dengan sintaks sederhana yang menggabungkan fitur statis dan dinamis.


✨ Fitur Utama

  • Tipe Data

    • Primitif: i32, i64, f32, f64, bool, str, none
    • Kompleks: array (1D & 2D, dinamis & statis), struct
  • Variabel

    • Deklarasi dengan atau tanpa initializer
    • Tipe statis atau dinamis
    • Shadowing variabel dalam scope
    • Assignment dan operator assignment: =, +=, -=, *=, /=, %=
  • Operator

    • Unary: -, !
    • Binary: +, -, *, /, %
    • Perbandingan & logika (==, !=, <, <=, >, >=, &&, ||)
  • Kontrol Alur

    • for loop dengan range
    • if, elif, else
    • break, continue
  • Fungsi

    • Fungsi dengan return dan procedure (-> none)
    • Parameter eksplisit dengan tipe data
    • Shadowing dalam fungsi
    • Support return type i32, f64, str, bool, none
  • Struct

    • Deklarasi & inisialisasi struct
    • Akses member struct
    • Array of struct
    • Static struct array (eksperimental)
  • Array

    • Array dinamis 1D & 2D
    • Array statis dengan ukuran eksplisit (i32[5])
    • Array of struct
    • Assignment & akses elemen dengan index
  • Input & Output

    • print(expr)
    • input(prompt, type) → input dengan tipe eksplisit
  • Fitur Tambahan

    • typeof(var) untuk mendapatkan tipe variabel
    • Error handling dasar (array out of bounds, tipe tidak cocok, dll.)
    • Kalkulator sederhana berbasis input

⚙️ Instalasi & Menjalankan

Clone repo:

git clone https://github.com/username/aiko-lang.git
cd aiko-lang
mkdir out/
nano run.sh # isi run.sh untuk mengcompile, bisa juga dengan makefile atau cmake
./run.sh # bisa juga pakai cmake atau makefile

Contoh Penggunaan

  • Variable & Print
print(-10);
print(10.566);
print(false);
print("hello");

var x = 99;
print(x);
  • Operator
var angka = 10 + 7 - 5 * 4 / 2;
print(angka);

var val = 10;
val += 5;
print(val);
  • Control Flow
for i = 0 .. 5 {
    if(i == 2) continue;
    if(i == 4) break;
    print(i);
}

var y = 10;
if(y <= 4) {
    print("<= 4");
}
elif(y <= 8) {
    print("<= 8");
}
else {
    print("> 8");
}
  • Function
fun add(x: i32, y: i32) -> i32 {
    return x + y;
}

var result = add(10, 20);
print(result);

fun displayX(x: i32) -> none {
    print(x);
}

displayX(5);
  • Struct
struct Person {
    name: str,
    age: i32
};

var p = Person{name: "Asep", age: 30};
print(p.name);
p.name = "Yuri";
print(p.name);
  • Array
var arr = [1, 2, 3];
arr[1] = 99;
print(arr);

var matrix = [[1,2],[3,4]];
print(matrix[0][1]);

var staticArr: i32[5] = [2,4,6,8,10];
staticArr[1] = 999;
print(staticArr);
  • Array of Struct
struct Student {
    name: str,
    nim: i32
};

var students = [
    Student{name: "hammpa", nim: 121},
    Student{name: "bluebird", nim: 125}
];

print(students[0].name);
students[0].name = "didigaw";
print(students[0].name);
  • Struct with Explicit Type
struct Student {
    name: str,
    nim: i32,
    age: i32
};

var s1: Student = Student{
    name: "Asep",
    nim: 12345,
    age: 19
};
  • Array of Struct with Explicit Type
var staticArrStruct4: Car[2];
staticArrStruct4[0] = Car{name: "lamborghini"};
staticArrStruct4[1] = Car{name: "mazda"};

print("Static struct array 4 index 0 dan 1 name:");
print(staticArrStruct4[0].name);
print(staticArrStruct4[1].name);

Keterangan

Bahasa ini masih dalam tahap pengembangan; beberapa fitur seperti assignment dan array 2D belum sepenuhnya stabil. Dirancang untuk pembelajaran compiler, interpretasi, dan eksperimen dengan LLVM.

About

Repository bahasa pemrograman Aiko, dibangun menggunakan LLVM-14 dan C++. Mendukung tipe data primitif, array, struct, fungsi, loop, dan ekspresi kompleks untuk pengembangan bahasa modern

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published