Skip to content

Bahasa pemrograman sederhana dengan sintaks berbasis bahasa Minang dari Sumatera Barat, Indonesia.

Notifications You must be signed in to change notification settings

howlil/minang-lang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Minang Language

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.

Daftar Isi

Fitur Utama

  • 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

Instalasi

Prasyarat

  • Compiler C++ yang mendukung C++17 (GCC 7+ atau Clang 5+)
  • Make

Langkah-langkah Instalasi

  1. Clone repositori ini:

    git clone https://github.com/yourusername/minang-language.git
    cd minang-language
  2. Compile proyek:

    make
  3. Jalankan tes untuk memastikan semua berfungsi dengan baik:

    make test
  4. (Opsional) Tambahkan ke PATH agar bisa diakses dari mana saja:

    # Tambahkan ke .bashrc atau .zshrc
    export PATH=$PATH:/path/to/minang-language/bin

Struktur Proyek

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

Menggunakan Bahasa Minang

Menjalankan Program

Untuk menjalankan file berisi kode Minang:

./bin/minang path/to/your/program.minang

Contoh:

./bin/minang examples/halo_dunia.minang

Mode Interaktif

Anda juga dapat menggunakan Minang dalam mode interaktif:

./bin/minang

Ini 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

Sintaks Dasar

Kata Kunci

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) { ... }

Tipe Data

Minang mendukung empat tipe data dasar:

  1. Integer: Bilangan bulat seperti 42, -7, 0
  2. Float: Bilangan desimal seperti 3.14, -2.5
  3. String: Teks dalam tanda kutip seperti "Halo Dunia"
  4. Boolean: Nilai logika batua (true) atau palsu (false)

Variabel

Deklarasi dan penggunaan variabel:

variabel nama = "Budi";
variabel umur = 25;
variabel tinggi = 175.5;
variabel aktif = batua;

caliak "Nama: " + nama + ", Umur: " + umur;

Operator

Minang mendukung operator berikut:

  1. Aritmatika: +, -, *, /, % (modulo)
  2. Perbandingan: >, <, >=, <=, ==, !=
  3. Logika: jo (AND), atau (OR), indak (NOT)
  4. Assignment: =

Kondisional

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";
}

Perulangan

  1. While Loop (salai):

    variabel hitungan = 1;
    salai (hitungan <= 5) {
        caliak "Hitungan: " + hitungan;
        hitungan = hitungan + 1;
    }
    
  2. For Loop (untuak):

    untuak (variabel i = 0; i < 5; i = i + 1) {
        caliak "Indeks: " + i;
    }
    

Fungsi

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

Contoh Program

Hello World

// File: examples/halo_dunia.minang
caliak "Halo Dunia!";
variabel nama = "Minang";
caliak "Halo " + nama + "!";

Program Faktorial

// 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

Kontribusi untuk pengembangan Minang Language sangat diterima. Berikut adalah beberapa cara Anda dapat berkontribusi:

  1. Melaporkan bug
  2. Menyarankan fitur baru
  3. Mengirimkan pull request dengan perbaikan atau peningkatan
  4. Meningkatkan dokumentasi

Lisensi

Proyek ini dilisensikan di bawah lisensi MIT. Lihat file LICENSE untuk detail lebih lanjut.

About

Bahasa pemrograman sederhana dengan sintaks berbasis bahasa Minang dari Sumatera Barat, Indonesia.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published