Skip to content

Latest commit

 

History

History
177 lines (160 loc) · 4.62 KB

File metadata and controls

177 lines (160 loc) · 4.62 KB

HyperText Programming Language - HTPL

@htpl

HyperText Programming Language

Berhenti berdebat apakah HTML adalah bahasa pemrograman.. inilah HTPL 😎

Perkenalan ⁉️

HTPL lahir dari perdebatan abadi di internet:

"Apakah HTML merupakan bahasa pemrograman atau tidak?"

Daripada terus berdebat... aku memutuskan untuk membuatnya saja. Jadi, inilah dia.

HyperText Programming Language (HTPL): terlihat seperti HTML, tetapi sebenarnya berperilaku seperti bahasa pemrograman yang sesungguhnya.

Instalasi 📑

git clone https://github.com/DrelezTM/HTPL.git
cd HTPL
npm install

Cara Menjalankan 🚀

node bin/htpl.js <file.htpl>

Contoh cara menjalankan:

node bin/htpl.js example/looping.htpl

Contoh 👀

Kode:

<htpl>
    <input name="name" prompt="Enter your name = "/>
    <output message="Hi {{ name }}! welcome to HyperText Programming Language!"/>
</htpl>

Hasil: image

Ingin melihat lebih banyak program HTPL yang keren dan bermain dengan file contoh lainnya? Lihat di sini

Perintah 🏗️

HTPL itu mirip HTML, tapi bukan bahasa markup - cuma buat bersenang-senang! Mendukung variabel, loop, kondisi, fungsi, input/output, dan kontrol alur dasar.

Assign and Reassign Variable

<set name="foo" value="'hello world'" />
<set name="bar" value="123" />
let foo = "hello world";
const bar = 123;

Input

<input name="username" prompt="Enter your name: " />
const readline = require('readline-sync');
const username = readline.question("Enter your name: ");

Output

<output message="Hello {{ username }}" />
console.log(`Hello ${username}`);

Conditional (If/Else)

<if condition="foo == 'hello'">
    <output message="It's hello!" />
</if>
<if condition="foo != 'hello'">
    <output message="Not hello." />
</if>
if(foo == "hello"){
    console.log("It's hello!");
} else {
    console.log("Not hello.");
}

Loops

<for var="i" from="0" to="5">
    <output message="Loop number {{ i }}" />
</for>
for (let i = 0; i < 5; i++){
    console.log("Loop number " + i);
}

Break/Continue

<for var="i" from="0" to="5">
    <if condition="i == 3">
        <break />
    </if>
</for>
for (let i = 0; i < 5; i++){
    if(i == 3) break;
}

Define Function

<function name="greet" params="firstname,lastname">
    <output message="Hello {{ firstname }}" />
    <output message="Hi {{ lastname }}" />
</function>
function greet(firstname, lastname){
    console.log(`Hello ${firstname}`);
    console.log(`Hi ${lastname}`);
}

Call Function

<call name="greet" args="'Yazid', 'Yusuf'"/>
greet("Yazid", "Yusuf");

Penting ⚠️

Setiap program HTPL harus dibungkus di dalam <htpl></htpl>.

Contohnya:

<htpl>
    <!-- Taruh kode HTPL kamu disini -->
    <set name="foo" value="'hello world'"/>
    <output message="Hello {{ foo }}"/>
</htpl>
  • Tag adalah akar program kamu.
  • Semua variabel, loop, fungsi, dan input/output harus berada di dalam tag akar ini.
  • Jika kamu melupakannya, interpreter tidak akan menjalankan kode kamu.

Bayangkan sebagai "kontainer utama" untuk program kamu - semua elemen berada di dalamnya. 🚀

Perhatian 🚧

Proyek ini dibuat untuk bersenang-senang, belajar, dan bereksperimen dengan konsep interpreter.
Proyek ini belum siap untuk produksi - jangan gunakan untuk sistem yang serius coy 😅

Silakan fork, perbaiki, atau buat HTPL kamu sendiri yaa!

Bahasa 🌏

Error atau Bug 🐞

Lisensi 📜