Minang Language adalah bahasa pemrograman sederhana yang menggunakan istilah bahasa Minang (bahasa dari Sumatera Barat, Indonesia) untuk kata kunci pemrograman. Bahasa ini diciptakan sebagai proyek edukasi untuk memahami bagaimana interpreter bahasa pemrograman bekerja.
- Fitur Utama
- Instalasi
- Struktur Proyek
- Menggunakan Bahasa Minang
- Sintaks Dasar
- Contoh Program
- Kontribusi
- Lisensi
- Sintaks yang mudah dipahami dengan kata kunci dalam bahasa Minang
- Mendukung tipe data dasar: integer, float, string, dan boolean
- Mendukung variabel dan operasi matematika dasar
- Mendukung struktur kontrol: if-else, while, for
- Mendukung fungsi dengan parameter dan return value
- Mendukung rekursi
- Interpreter yang dapat menjalankan kode dari file atau dalam mode interaktif
- Compiler C++ yang mendukung C++17 (GCC 7+ atau Clang 5+)
- Make
-
Clone repositori ini:
git clone https://github.com/yourusername/minang-language.git cd minang-language -
Compile proyek:
make
-
Jalankan tes untuk memastikan semua berfungsi dengan baik:
make test -
(Opsional) Tambahkan ke PATH agar bisa diakses dari mana saja:
# Tambahkan ke .bashrc atau .zshrc export PATH=$PATH:/path/to/minang-language/bin
MinangLanguage/
├── bin/ # Executable files
├── build/ # Build artifacts
├── examples/ # Contoh program Minang
│ ├── halo_dunia.minang
│ ├── perulangan.minang
│ ├── kalkulator.minang
│ ├── rekursif.minang
│ ├── factorial.minang
│ ├── fibonacci.minang
│ └── permainan_tebak.minang
├── include/ # Header files
│ ├── Ast.h
│ ├── ErrorHandler.h
│ ├── Interpreter.h
│ ├── Lexer.h
│ ├── MinangLang.h
│ ├── Parser.h
│ └── Token.h
├── src/ # Source files
│ ├── Ast.cpp
│ ├── ErrorHandler.cpp
│ ├── Interpreter.cpp
│ ├── Lexer.cpp
│ ├── main.cpp
│ ├── MinangLang.cpp
│ ├── Parser.cpp
│ └── Token.cpp
├── test/ # Test files
│ └── test_main.cpp
├── Makefile
└── README.md
Untuk menjalankan file berisi kode Minang:
./bin/minang path/to/your/program.minangContoh:
./bin/minang examples/halo_dunia.minangAnda juga dapat menggunakan Minang dalam mode interaktif:
./bin/minangIni akan memulai REPL (Read-Eval-Print Loop) di mana Anda dapat mengetikkan ekspresi dan melihat hasilnya langsung:
Minang Language v1.0.0
Ketik 'kalua' untuk keluar
minang> caliak "Halo Dunia!";
Halo Dunia!
minang> variabel x = 42;
minang> caliak x * 2;
84
minang> kalua
| Kata Kunci Minang | Fungsi | Contoh Penggunaan |
|---|---|---|
| variabel | Deklarasi variabel | variabel x = 5; |
| jikok | Pernyataan if | jikok (x > 5) { ... } |
| selain | Pernyataan else | selain { ... } |
| salai | Loop while | salai (x > 0) { ... } |
| untuak | Loop for | untuak (variabel i = 0; i < 10; i = i + 1) { ... } |
| fungsi | Deklarasi fungsi | fungsi nama(param) { ... } |
| baliak | Return value | baliak nilai; |
| caliak | Print ke konsol | caliak "Teks"; |
| batua | Nilai boolean true | variabel benar = batua; |
| palsu | Nilai boolean false | variabel salah = palsu; |
| jo | Operator logika AND | jikok (x > 5 jo y < 10) { ... } |
| atau | Operator logika OR | jikok (x < 0 atau x > 10) { ... } |
| indak | Operator logika NOT | jikok (indak kondisi) { ... } |
Minang mendukung empat tipe data dasar:
- Integer: Bilangan bulat seperti 42, -7, 0
- Float: Bilangan desimal seperti 3.14, -2.5
- String: Teks dalam tanda kutip seperti "Halo Dunia"
- Boolean: Nilai logika
batua(true) ataupalsu(false)
Deklarasi dan penggunaan variabel:
variabel nama = "Budi";
variabel umur = 25;
variabel tinggi = 175.5;
variabel aktif = batua;
caliak "Nama: " + nama + ", Umur: " + umur;
Minang mendukung operator berikut:
- Aritmatika:
+,-,*,/,%(modulo) - Perbandingan:
>,<,>=,<=,==,!= - Logika:
jo(AND),atau(OR),indak(NOT) - Assignment:
=
Struktur if-else dalam Minang:
variabel nilai = 75;
jikok (nilai >= 80) {
caliak "Nilai A";
} selain jikok (nilai >= 70) {
caliak "Nilai B";
} selain jikok (nilai >= 60) {
caliak "Nilai C";
} selain {
caliak "Nilai D";
}
-
While Loop (salai):
variabel hitungan = 1; salai (hitungan <= 5) { caliak "Hitungan: " + hitungan; hitungan = hitungan + 1; } -
For Loop (untuak):
untuak (variabel i = 0; i < 5; i = i + 1) { caliak "Indeks: " + i; }
Deklarasi dan pemanggilan fungsi:
fungsi luasPersegi(sisi) {
baliak sisi * sisi;
}
fungsi kelilingPersegi(sisi) {
baliak 4 * sisi;
}
variabel sisi = 5;
caliak "Luas persegi: " + luasPersegi(sisi);
caliak "Keliling persegi: " + kelilingPersegi(sisi);
Fungsi rekursif:
fungsi factorial(n) {
jikok (n <= 1) {
baliak 1;
}
baliak n * factorial(n - 1);
}
caliak factorial(5); // Output: 120
// File: examples/halo_dunia.minang
caliak "Halo Dunia!";
variabel nama = "Minang";
caliak "Halo " + nama + "!";
// File: examples/factorial.minang
fungsi factorial(n) {
jikok (n <= 1) {
baliak 1;
}
baliak n * factorial(n - 1);
}
variabel angka = 5;
caliak "Factorial dari " + angka + " adalah " + factorial(angka);
untuak (variabel i = 1; i <= 10; i = i + 1) {
caliak i + "! = " + factorial(i);
}
Untuk lebih banyak contoh, silakan lihat folder examples/ dalam repositori.
Kontribusi untuk pengembangan Minang Language sangat diterima. Berikut adalah beberapa cara Anda dapat berkontribusi:
- Melaporkan bug
- Menyarankan fitur baru
- Mengirimkan pull request dengan perbaikan atau peningkatan
- Meningkatkan dokumentasi
Proyek ini dilisensikan di bawah lisensi MIT. Lihat file LICENSE untuk detail lebih lanjut.