Skip to content

levouinse/sofinco-language

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SOFINCO - Bahasa Pemrograman Bahasa Bugis-Makassar

Bahasa pemrograman dengan sintaks Bahasa Bugis-Makassar yang berjalan di atas Python. Semua fitur Python bisa digunakan dengan nama dalam Bahasa Bugis-Makassar!

πŸš€ FITUR BARU v3.0

πŸ”₯ Fitur Production-Ready

  • βœ… REPL Interactive Mode - Mode interaktif untuk eksperimen cepat
  • βœ… Decompiler - Convert Sofinco kembali ke Python
  • βœ… Syntax Checker - Validasi syntax tanpa eksekusi
  • βœ… Code Formatter - Format kode otomatis
  • βœ… AST Viewer - Visualisasi Abstract Syntax Tree
  • βœ… Profiler - Analisis performa program
  • βœ… Linter - Deteksi masalah kode
  • βœ… Benchmark - Ukur kecepatan eksekusi
  • βœ… Docs - Dokumentasi keyword built-in
  • βœ… Package Manager - Install library Python
  • βœ… Transpiler JS - Experimental JavaScript output

πŸ“¦ CARA INSTAL

pip install sofinco

πŸš€ CARA PAKAI

Menjalankan Program Sofinco

sofinco run namafile.sofinco
# atau
sofinco namafile.sofinco

Opsi tambahan:

sofinco run namafile.sofinco --nosv  # Tidak menyimpan file Python hasil konversi

Convert Python ke Sofinco

Convert single file:

sofinco convert file.py

Convert direktori (rekursif):

sofinco convert /path/to/directory

Convert direktori (non-rekursif):

sofinco convert /path/to/directory --no-recursive

Decompile Sofinco ke Python

sofinco decompile program.sofinco
sofinco decompile program.sofinco -o output.py

Check Syntax

sofinco check program.sofinco

Format Code

sofinco format program.sofinco           # Buat file baru
sofinco format program.sofinco -i        # Format in-place
sofinco format program.sofinco --indent 2  # Custom indentation

REPL Interactive Mode

sofinco repl

Profiling & Benchmarking

sofinco profile program.sofinco
sofinco profile program.sofinco -o profile.txt
sofinco benchmark program.sofinco
sofinco benchmark program.sofinco --iterations 1000

Linting

sofinco lint program.sofinco

AST Viewer

sofinco ast program.sofinco
sofinco ast program.sofinco --format json

Documentation

sofinco docs              # List semua keyword
sofinco docs paccerak     # Detail keyword tertentu

Package Management

sofinco install requests
sofinco list

Transpile to JavaScript (Experimental)

sofinco transpile program.sofinco

Version Info

sofinco version
sofinco --version

πŸ“ CONTOH PROGRAM

Test Suite Lengkap

Jalankan test suite komprehensif yang mencakup semua fitur:

sofinco run test.sofinco

Test suite mencakup:

  • βœ… Tipe Data Dasar (Integer, String, Float, Boolean, None)
  • βœ… Struktur Data (List, Tuple, Dict, Set)
  • βœ… Operasi List (append, sort, reverse, dll)
  • βœ… Operasi Dictionary (keys, values, items, dll)
  • βœ… Operasi String (upper, lower, split, join, dll)
  • βœ… Fungsi (definisi, rekursif, parameter default)
  • βœ… Kondisi (if-elif-else, nested)
  • βœ… Loop (for, while, break, continue)
  • βœ… Operator Logika (and, or, not, in, is)
  • βœ… Exception Handling (try-except-finally)
  • βœ… Built-in Functions (range, len, sum, min, max, dll)
  • βœ… Kelas dan Objek (class, init, methods)
  • βœ… Lambda Function
  • βœ… List Comprehension
  • βœ… Import Module
  • βœ… Advanced Features (unpacking, formatting)
  • βœ… Stress Test (nested loops, large data)

Program Sederhana

# Program sederhana
paccerak("Assalamu Alaikum!")

# Fungsi
pangngaseng sapa(jeneng):
    paccerak("Halo,", jeneng)
    baliki "Selamat datang!"

hasil = sapa("Makassar")

# Kondisi
umuru = 20
nakko umuru >= 18:
    paccerak("Dewasa")
nakkopa umuru >= 13:
    paccerak("Remaja")
narekko:
    paccerak("Anak-anak")

# Loop
ulangi i rilaleng jangka(1, 6):
    paccerak(i)

# List operations
daptar_nama = daptar(["Ali", "Budi", "Citra"])
daptar_nama.tambai("Dedi")
paccerak("Jumlah:", carakna(daptar_nama))

# Exception handling
coba:
    bilanga("abc")
nakkosala ValueError siaganga e:
    paccerak("Error:", e)
nakkosedding:
    paccerak("Selesai")

πŸ”€ REFERENSI LENGKAP SYNTAX

πŸ“₯ Input/Output

Sofinco Python Arti
paccerak print Cetak ke layar
cetak print Cetak ke layar (alternatif)
passuluak input Terima input
terima input Terima input (alternatif)

πŸ”’ Tipe Data

Sofinco Python Arti
bilanga int Bilangan bulat
uwinru int Bilangan bulat (alternatif)
aksara str String/teks
sura str String/teks (alternatif)
desimal float Bilangan desimal
daptar list List/daftar
kumpulan list List/daftar (alternatif)
tupel tuple Tuple
peta dict Dictionary
pada dict Dictionary (alternatif)
himpunan set Set
bolean bool Boolean

βœ… Nilai Boolean

Sofinco Python Arti
makanja True Benar
makasiri True Benar (alternatif)
demakanja False Salah
tamakasiri False Salah (alternatif)
taniaapa None Kosong/None
kosong None Kosong/None
tannia None Kosong/None (alternatif)

πŸ”€ Kontrol Alur

Sofinco Python Arti
nakko if Jika
wennang if Jika (alternatif)
nakkopa elif Jika lagi
wennangpa elif Jika lagi (alternatif)
narekko else Selain itu
naiya else Selain itu (alternatif)
ulangi for Perulangan untuk
sedding while Perulangan selama
tappai break Hentikan loop
laoi continue Lanjut iterasi
lewati pass Lewati/pass
pilih match Pilih kasus (Python 3.10+)
kasus case Kasus (Python 3.10+)

πŸ”§ Fungsi & Kelas

Sofinco Python Arti
pangngaseng def Definisi fungsi
pangngadereng def Definisi fungsi (alternatif)
baliki return Kembalikan nilai
pole return Kembalikan nilai (alternatif)
fungsi_singkat lambda Fungsi lambda
kelas class Definisi kelas
pangngassengang class Definisi kelas (alternatif)
inisialisasi init Konstruktor
statis staticmethod Metode statis
kelas_metode classmethod Metode kelas
properti property Properti
induk super Super class

⚠️ Exception Handling

Sofinco Python Arti
coba try Coba eksekusi
nakkosala except Tangkap error
nakkosedding finally Akhirnya
bangkitki raise Bangkitkan error
kudu assert Pastikan kondisi

πŸ“¦ Import & Module

Sofinco Python Arti
impor import Import modul
riboko from Dari modul
siaganga as Sebagai alias

πŸ“ Operasi File

Sofinco Python Arti
bukka open Buka file
tulis write Tulis ke file
baca read Baca file
bacabarisa readline Baca per baris
bacasemua readlines Baca semua baris
tutup close Tutup file
modetulis "w" Mode tulis
modebaca "r" Mode baca
modeambah "a" Mode tambah
modebiner "b" Mode biner

πŸ› οΈ Fungsi Built-in

Sofinco Python Arti
jangka range Rentang angka
carakna len Panjang/jumlah
jumlahki sum Jumlahkan
palingciddi min Nilai minimum
palinglompo max Nilai maksimum
urutki sorted Urutkan (baru)
balikkidaptar reversed Balik urutan
hitungurut enumerate Hitung dengan urutan
gabung_daptar zip Gabung list
petakan map Petakan fungsi
saring filter Saring data
semua all Semua benar
ada any Ada yang benar
mutlak abs Nilai mutlak
bulatki round Bulatkan
pangkat pow Pangkat
tipe type Tipe data
daftar_atribut dir Daftar atribut
variabel vars Variabel objek
bantuan help Bantuan
evaluasi eval Evaluasi ekspresi
eksekusi exec Eksekusi kode
kompilasi compile Kompilasi kode
formatki format Format string
karakter chr Karakter dari kode
nilai_karakter ord Kode dari karakter
heksadesimal hex Konversi ke hex
oktal oct Konversi ke oktal
biner bin Konversi ke biner
iris slice Slice objek
induk super Akses parent class

πŸ“‹ Metode List

Sofinco Python Arti
tambai append Tambah di akhir
burakne pop Ambil & hapus
urutkanki sort Urutkan (in-place)
balikidaptar reverse Balik urutan
sisipki insert Sisipkan di posisi
hapuski remove Hapus nilai
bersihki clear Kosongkan
hitungki count Hitung kemunculan
indexki index Cari indeks
extendki extend Gabung list
copyaki copy Salin list

πŸ“š Metode Dictionary

Sofinco Python Arti
kunci keys Ambil semua kunci
nilai values Ambil semua nilai
pasangan items Ambil pasangan key-value
ambilki get Ambil nilai
perbaharui update Perbarui dictionary
bersihki clear Kosongkan
burakne pop Ambil & hapus
salinki copy Salin dictionary

πŸ”’ Metode Set

Sofinco Python Arti
tambahki add Tambah elemen
buangki discard Buang elemen
hapuski remove Hapus elemen
bersihki clear Kosongkan
gabungan union Gabungan set
irisan intersection Irisan set
selisih difference Selisih set
selisih_simetris symmetric_difference Selisih simetris

πŸ“ Metode String

Sofinco Python Arti
sappai find Cari posisi
gantiki replace Ganti teks
lompo upper Huruf besar
ciddi lower Huruf kecil
kapital capitalize Kapital awal
judul title Format judul
potongki strip Potong spasi
pecaki split Pecah string
gabungki join Gabung string
mulai_dengan startswith Mulai dengan
akhiri_dengan endswith Akhiri dengan
huruf_semua isalpha Cek huruf semua
angka_semua isdigit Cek angka semua
huruf_angka isalnum Cek huruf/angka
spasi_semua isspace Cek spasi semua
ciddi_semua islower Cek huruf kecil
lompo_semua isupper Cek huruf besar
isi_nol zfill Isi dengan nol
tengahki center Rata tengah
kiri_rata ljust Rata kiri
kanan_rata rjust Rata kanan
tukar_huruf swapcase Tukar besar-kecil
enkode encode Encode string
dekode decode Decode string

πŸ”— Operator Logika

Sofinco Python Arti
rilaleng in Di dalam
taniarilaleng not in Tidak di dalam
sisamaya is Adalah (identitas)
taniasisamaya is not Bukan (identitas)
dan and Dan
atau or Atau
tania not Tidak

πŸ’‘ CONTOH LENGKAP

Convert Python ke Sofinco

# File Python
cat example.py
def greet(name):
    print(f"Hello, {name}!")
    return True

for i in range(5):
    print(i)
# Convert ke Sofinco
sofinco convert example.py
# Hasil: example.sofinco
cat example.sofinco
pangngaseng greet(name):
    paccerak(f"Hello, {name}!")
    baliki makanja

ulangi i rilaleng jangka(5):
    paccerak(i)

Operasi File

# Tulis file
siaganga bukka("data.txt", modetulis) siaganga berkas:
    berkas.tulis("Halo Makassar!\n")

# Baca file
siaganga bukka("data.txt", modebaca) siaganga berkas:
    isi = berkas.baca()
    paccerak(isi)

Exception Handling

coba:
    angka = bilanga(passuluak("Masukkan angka: "))
    hasil = 100 / angka
    paccerak("Hasil:", hasil)
nakkosala ValueError:
    paccerak("Input bukan angka!")
nakkosala ZeroDivisionError:
    paccerak("Tidak bisa dibagi nol!")
nakkosedding:
    paccerak("Program selesai")

Kelas & Objek

kelas Manusia:
    pangngaseng inisialisasi(diri, nama, umur):
        diri.nama = nama
        diri.umur = umur
    
    pangngaseng perkenalan(diri):
        paccerak("Nama saya", diri.nama)
        paccerak("Umur saya", diri.umur)

orang = Manusia("Ahmad", 25)
orang.perkenalan()

List & Dictionary

# List operations
angka = daptar([5, 2, 8, 1, 9])
angka.urutkanki()
paccerak("Terurut:", angka)
paccerak("Terkecil:", palingciddi(angka))
paccerak("Terbesar:", palinglompo(angka))

# Dictionary
data = peta({"nama": "Budi", "umur": 20})
paccerak(data.get("nama"))

Loop & Kondisi

# Loop dengan break dan continue
ulangi i rilaleng jangka(1, 11):
    nakko i == 5:
        laoi  # Skip angka 5
    nakko i == 8:
        tappai  # Berhenti di 8
    paccerak(i)

# While loop
hitung = 0
sedding hitung < 5:
    paccerak("Hitung:", hitung)
    hitung = hitung + 1

βš™οΈ PERSYARATAN SISTEM

  • Python 3.8 atau lebih baru
  • Sofinco TIDAK BISA berjalan tanpa Python (transpiler berbasis Python)

🎨 SYNTAX HIGHLIGHTING

Sofinco mendukung syntax highlighting di berbagai editor!

Supported Editors:

  • VSCode
  • Vim/Neovim
  • LazyVim
  • Sublime Text
  • Nano

Quick Install (LazyVim):

cp sofinco-syntax/lazyvim/lua/plugins/sofinco.lua ~/.config/nvim/lua/plugins/
cp sofinco-syntax/vim/syntax/sofinco.vim ~/.config/nvim/syntax/
cp sofinco-syntax/vim/ftdetect/sofinco.vim ~/.config/nvim/ftdetect/

Quick Install (VSCode):

cp -r sofinco-syntax/vscode ~/.vscode/extensions/sofinco-vscode

Lihat dokumentasi lengkap di GitHub untuk panduan instalasi syntax highlighting.

🀝 KONTRIBUSI

Kontribusi sangat diterima! Silakan buat issue atau pull request di GitHub.

πŸ“„ LISENSI

MIT License

πŸ”— LINKS

About

Sofinco-language based on python 3 using bugis as the syntax.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages