{"id":26355717,"url":"https://github.com/fastering18/membuat-bahasa-pemrograman","last_synced_at":"2025-03-16T13:17:31.361Z","repository":{"id":57259808,"uuid":"346991575","full_name":"Fastering18/Membuat-Bahasa-Pemrograman","owner":"Fastering18","description":"Buat kreasi bahasa pemrograman sendiri dengan python!","archived":false,"fork":false,"pushed_at":"2021-08-24T01:39:31.000Z","size":3566,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-15T18:53:16.475Z","etag":null,"topics":["bahasa-indonesia","gblk","opensource","python"],"latest_commit_sha":null,"homepage":"https://github.com/Fastering18/Membuat-Bahasa-Pemrograman","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Fastering18.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-03-12T08:17:58.000Z","updated_at":"2023-01-26T11:36:57.000Z","dependencies_parsed_at":"2022-08-25T01:50:17.352Z","dependency_job_id":null,"html_url":"https://github.com/Fastering18/Membuat-Bahasa-Pemrograman","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fastering18%2FMembuat-Bahasa-Pemrograman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fastering18%2FMembuat-Bahasa-Pemrograman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fastering18%2FMembuat-Bahasa-Pemrograman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fastering18%2FMembuat-Bahasa-Pemrograman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fastering18","download_url":"https://codeload.github.com/Fastering18/Membuat-Bahasa-Pemrograman/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243871914,"owners_count":20361380,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bahasa-indonesia","gblk","opensource","python"],"created_at":"2025-03-16T13:17:30.490Z","updated_at":"2025-03-16T13:17:31.354Z","avatar_url":"https://github.com/Fastering18.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Membuat-Bahasa-Pemrograman ![travisci test](https://api.travis-ci.org/Fastering18/Membuat-Bahasa-Pemrograman.svg?branch=main)  \nBuat kreasi bahasa pemrograman sendiri dengan python!  \n\nSebelum memulai, download terlebih dahulu dibawah ini\n\n**Download Python versi 3.x**    \n- [python.org](https://www.python.org/downloads/)  \n  \n**Download Nuitka 0.6.x** (untuk generate build file dari python)  \n- [Nuitka github](https://github.com/Nuitka/Nuitka) \n- Atau bisa juga dengan `pip install nuitka`  \n  \n\u003chr\u003e  \n\n# DEFINISI  \n## Tokenizer  \nTokenisasi adalah proses mengganti data dengan simbol identifikasi unik yang menyimpan semua informasi penting tentang data tanpa mengorbankan keamanannya.    \nToken yang dihasilkan dapat di gunakan untuk mengidentifikasi tipe data, dll.  \n\n## Lexer  \nLexer hanya mengubah string yang tidak berarti menjadi daftar datar hal-hal seperti \"literal angka\", \"literal string\", \"pengidentifikasi\", atau \"operator\", dan dapat melakukan hal-hal seperti mengenali pengidentifikasi dan menghilangkan spasi.    \nLexer dapat **mengidentifikasi** operator yang akan digunakan, mendeklarasikan variabel, dll.  \n\n## Parser  \nParser mengambil data masukan (sering kali teks) dan membangun struktur data, seringkali semacam AST (Abstract Syntax Tree), pohon sintaks abstrak atau struktur hierarki lainnya, memberikan representasi struktural dari masukan sambil memeriksa sintaks yang benar.  \nParser dapat membuat pohon AST dan mengidentifikasi sintaks sebelum benar-benar di esekusi.  \n\n## Interpreter  \nInterpreter adalah program komputer yang secara langsung menjalankan instruksi yang ditulis dalam bahasa pemrograman atau scripting, tanpa mengharuskannya sebelumnya telah dikompilasi ke dalam program bahasa mesin.  \nInterpreter dapat menjalankan intruksi tanpa harus menjadi _machine code_, interpreter dapat menghasilkan operasi matematika, _bitwise operator_, dll.  \n  \n# Menjalankan script  \nsetelah build file binary (.exe), lakukan command:  \n```./gblk.exe [lokasi file]```  \n\nJalankan dengan Python jika tidak terdapat binary file:  \n```python gblk.py [lokasi file]```  \n\nUntuk menjalankan test ([Makefile](http://gnuwin32.sourceforge.net/packages/make.htm)):  \n```make test```  \n\n\n# Basic syntax  \n```gblk\ntulis(\"halo dunia\") -- output halo dunia ke stdout\n\njika benar maka\n   tulis(\"benar == true dan salah == false\") -- boolean dasar\ntutup -- menutup if statement\n\nlokal str = \"selamat pagi\"\ntulis(\"Panjang string: \" + panjang(str))\ntulis((str * 3) + \"\\nuntuk ketiga kalinya\")\n\nlokal iterasi = 10\nsaat iterasi \u003e 1 maka\n   tulis(iterasi)\n   lokal iterasi = iterasi - 1\ntutup\n\n\ntulis(\"program selesai\")\n```   \n## Tipe data  \n- Angka  -\u003e tipe data number, angka 0-9\n- String  -\u003e tipe data string\n- Boolean  -\u003e tipe data boolean (benar|salah)  \n- Array  -\u003e tipe data array, [\"indeks0\", 1]\n## Built-in fungsi  \n- tulis(semua)  -\u003e menulis ke stdout  \n- panjang(string|array)  -\u003e menghitung panjang data  \n- tunggu(angka?)  -\u003e menghentikan sementara thread selama waktu yang ditentukan (detik)  \n- tipe(semua)  -\u003e mendapatkan nama tipe data  \n- substring(string, angkaAwal, angkaAkhir?)  -\u003e memangkas string dari start ke akhir  \n- masukkan(array, semua)  -\u003e memasukkan isi kedalam array (indeks terakhir)  \n- jalankan(lokasi_file)  -\u003e mengesekusi file yang sudah ditentukan  \n## Built-in keyword  \n- jika `\u003ckondisi\u003e` maka `\u003cekspr\u003e` tutup  -\u003e ekuivalen dengan if statement  \n- saat `\u003ckondisi\u003e` maka `\u003cekspr\u003e` tutup  -\u003e ekuivalen dengan loop while statement  \n- untuk `\u003cnama variabel\u003e` = `\u003cangka awal\u003e` ke `\u003cangka tujuan\u003e` langkah `\u003ckoefisien\u003e` maka `\u003cekspr\u003e` tutup  -\u003e ekuivalen dengan loop for statement  \n\n**Project migrated to node.js, please refer to**  \n\u003e https://github.com/Fastering18/node-gblok\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffastering18%2Fmembuat-bahasa-pemrograman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffastering18%2Fmembuat-bahasa-pemrograman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffastering18%2Fmembuat-bahasa-pemrograman/lists"}