pyscript-programming-language 1.2.0__tar.gz → 1.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pyscript-programming-language might be problematic. Click here for more details.

Files changed (48) hide show
  1. pyscript_programming_language-1.2.1/MANIFEST.in +5 -0
  2. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/PKG-INFO +13 -13
  3. pyscript_programming_language-1.2.1/PyScript.png +0 -0
  4. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/README.md +12 -12
  5. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/__main__.py +4 -3
  6. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/__init__.py +2 -0
  7. pyscript_programming_language-1.2.1/pyscript/core/handlers.py +60 -0
  8. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/highlight.py +21 -18
  9. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/interpreter.py +49 -48
  10. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/nodes.py +2 -2
  11. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/objects.py +2 -3
  12. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/parser.py +13 -6
  13. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/runner.py +2 -1
  14. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/utils.py +4 -64
  15. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/version.py +2 -2
  16. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/lib/_tantee/__init__.pys +12 -6
  17. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/lib/sys.pys +4 -1
  18. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript_programming_language.egg-info/PKG-INFO +13 -13
  19. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript_programming_language.egg-info/SOURCES.txt +3 -0
  20. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/setup.py +1 -4
  21. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/__init__.py +0 -0
  22. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/__init__.pyi +0 -0
  23. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/bases.py +0 -0
  24. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/buffer.py +0 -0
  25. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/cache.py +0 -0
  26. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/constants.py +0 -0
  27. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/context.py +0 -0
  28. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/exceptions.py +0 -0
  29. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/lexer.py +0 -0
  30. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/position.py +0 -0
  31. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/pysbuiltins.py +0 -0
  32. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/results.py +0 -0
  33. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/singletons.py +0 -0
  34. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/symtab.py +0 -0
  35. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/token.py +0 -0
  36. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/core/validator.py +0 -0
  37. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/lib/_tantee/animate.pys +0 -0
  38. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/lib/_tantee/lyrics.pys +0 -0
  39. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/lib/_tantee/tantee.mp3 +0 -0
  40. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/lib/clock.pys +0 -0
  41. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/lib/getch.pys +0 -0
  42. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/lib/hello.pys +0 -0
  43. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/lib/parser.pys +0 -0
  44. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/lib/this.pys +0 -0
  45. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript/this.py +0 -0
  46. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript_programming_language.egg-info/dependency_links.txt +0 -0
  47. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/pyscript_programming_language.egg-info/top_level.txt +0 -0
  48. {pyscript_programming_language-1.2.0 → pyscript_programming_language-1.2.1}/setup.cfg +0 -0
@@ -0,0 +1,5 @@
1
+ include MANIFEST.in
2
+ include PyScript.png
3
+ include setup.py
4
+
5
+ recursive-include pyscript/lib *
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyscript-programming-language
3
- Version: 1.2.0
3
+ Version: 1.2.1
4
4
  Summary: PyScript Programming Language
5
5
  Home-page: https://github.com/azzammuhyala/pyscript
6
6
  Author: azzammuhyala
@@ -39,8 +39,8 @@ PyScript adalah bahasa pemprograman sederhana yang dibuat di atas bahasa Python.
39
39
 
40
40
  ## Bagaimana Cara Pemasangannya?
41
41
  1. Pertama-tama Anda perlu mengunduh Python terlebih dahulu. Usahakan versi yang digunakan sudah paling terbaru di atas versi `3.5` agar kode bisa di jalankan dengan benar. Kunjungi [website resmi Python](https://python.org) untuk mengunduhnya.
42
- 2. Setelah mengunduh dan melakukan beberapa konfigurasi aplikasi Python, unduh repositori ini atau melalui direktori `pyscript` atau dengan perintah `python -m pip install pyscript-programming-language` (_Direkomendasikan_).
43
- 3. Sekarang coba Anda jalankan PyScript shell (REPL) dengan perintah `python -m pyscript`. Jika berhasil maka harusnya anda akan melihat versi, tanggal dan tanda `>>>`.
42
+ 2. Setelah mengunduh dan melakukan beberapa konfigurasi aplikasi Python, unduh repositori ini atau melalui direktori `pyscript` atau jika Anda sudah mengunduh Python gunakan dengan perintah `python -m pip install pyscript-programming-language` (_Direkomendasikan_).
43
+ 3. Sekarang silahkan Anda jalankan PyScript shell (_REPL_) dengan perintah `python -m pyscript`. Jika berhasil maka harusnya Anda akan melihat versi, tanggal dan tanda `>>>`.
44
44
  4. _OPSIONAL_. Anda bisa mengunduh dan menyiapkan kode editor seperti VS Code atau kode editor lainnya untuk menulis program. Atau kalau mau yang berbeda Anda bisa menggunakan Notepad.
45
45
  5. Jika semua sudah aman dan berjalan dengan benar, sekarang Anda sudah bisa masuk ke sesi pengenalan bahasa PyScript!
46
46
 
@@ -73,8 +73,8 @@ Di sesi ini, Anda akan mempelajari semua aspek bahasa dalam bahasa PyScript yang
73
73
  Pertama-tama Anda akan mempelajari tentang komentar, komentar adalah cara kita memberikan penjelasan tertentu pada blok kita agar jika suatu nanti atau orang lain bisa mengetahui maksud kode yang Anda tulis. Komentar di PyScript mirip dengan Python dimana ia dikuti dengan pagar `#` lalu setelah itu Anda bisa memberikan komentar. Komentar tidak diesekusi oleh program.
74
74
  <pre class="pyscript-code"><span id="comment"># Ini adalah komentar</span><br><br><span id="comment"># Ini mencetak kata &quot;Halo!&quot; ke layar</span><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="string">&quot;Halo!&quot;</span><span id="parenthesis-0">)</span><br><br><span id="number">1</span><span id="default"> + </span><span id="number">1</span><span id="default"> </span><span id="comment"># Ekspresi</span></pre>
75
75
 
76
- ### Variabel
77
- Variabel secara singkat yakni menyimpan suatu nilai. Pasti harusnya Anda sudah tidak asing dengan variabel. Variabel di buat sebagai berikut ini:
76
+ ### Membuat Variabel (Operasi Penugasan)
77
+ Variabel secara singkat yakni menyimpan suatu nilai. Seharusnya Anda sudah tidak asing dengan variabel. Variabel di buat sebagai berikut ini:
78
78
  <pre class="pyscript-code"><span id="identifier">x</span><span id="default"> = </span><span id="number">1</span><br><span id="identifier">y</span><span id="default"> = </span><span id="number">1</span><br><span id="identifier">z</span><span id="default"> = </span><span id="number">1</span></pre>
79
79
 
80
80
  Di bahasa Python pun juga sama, kita membuat suatu nama lalu di lanjutkan tanda sama dengan lalu nilai yang mau kita isi.
@@ -86,7 +86,7 @@ Anda juga bisa sekaligus menyimpan lebih dari 1 variabel dengan hanya 1 nilai se
86
86
 
87
87
  ### Objek dan Tipe Data
88
88
  Di PyScript sebenarnya objek dan tipe data di atur oleh Python. Jadi semua objek serta sifat-sifat dan fungsi-fungsinya semuanya di atur dari Python. Berikut ini beberapa objek literal dari Python/PyScript:
89
- <pre class="pyscript-code"><span id="identifier">a</span><span id="default"> = </span><span id="number">1</span><span id="default"> </span><span id="comment"># int</span><br><span id="identifier">b</span><span id="default"> = </span><span id="number">1.0</span><span id="default"> </span><span id="comment"># float</span><br><span id="identifier">c</span><span id="default"> = </span><span id="number">1j</span><span id="default"> </span><span id="comment"># complex</span><br><span id="identifier">d</span><span id="default"> = </span><span id="number">1</span><span id="default">+</span><span id="number">1j</span><span id="default"> </span><span id="comment"># ini juga complex</span><br><span id="identifier">e</span><span id="default"> = </span><span id="string">&#x27;string&#x27;</span><span id="default"> </span><span id="comment"># ini str</span><br><span id="identifier">f</span><span id="default"> = </span><span id="string">&quot;string&quot;</span><span id="default"> </span><span id="comment"># ini juga str (beda kutipan saja)</span><br><span id="identifier">g</span><span id="default"> = </span><span id="string">r&#x27;raw&#x27;</span><span id="default"> </span><span id="comment"># ini raw str (string mentah tidak memproses escape)</span><br><span id="identifier">h</span><span id="default"> = </span><span id="string">b&#x27;bytes&#x27;</span><span id="default"> </span><span id="comment"># ini bytes</span><br><span id="identifier">i</span><span id="default"> = </span><span id="keyword-identifier">True</span><span id="default"> </span><span id="comment"># ini bool</span><br><span id="identifier">j</span><span id="default"> = </span><span id="keyword-identifier">False</span><span id="default"> </span><span id="comment"># ini juga bool (lawannya)</span><br><span id="identifier">k</span><span id="default"> = </span><span id="keyword-identifier">None</span><span id="default"> </span><span id="comment"># ini NoneType (tidak ada nilai)</span><br><span id="identifier">l</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">]</span><span id="default"> </span><span id="comment"># ini list</span><br><span id="identifier">m</span><span id="default"> = </span><span id="parenthesis-0">(</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># ini tuple</span><br><span id="identifier">n</span><span id="default"> = </span><span id="parenthesis-0">{</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">}</span><span id="default"> </span><span id="comment"># ini set (himpunan)</span><br><span id="identifier">o</span><span id="default"> = </span><span id="parenthesis-0">{</span><span id="string">&#x27;a&#x27;</span><span id="default">: </span><span id="number">1</span><span id="parenthesis-0">}</span><span id="default"> </span><span id="comment"># ini dict (dictionary atau kamus)</span></pre>
89
+ <pre class="pyscript-code"><span id="identifier">a</span><span id="default"> = </span><span id="number">1</span><span id="default"> </span><span id="comment"># int</span><br><span id="identifier">b</span><span id="default"> = </span><span id="number">1.0</span><span id="default"> </span><span id="comment"># float</span><br><span id="identifier">c</span><span id="default"> = </span><span id="number">1j</span><span id="default"> </span><span id="comment"># complex</span><br><span id="identifier">d</span><span id="default"> = </span><span id="number">1</span><span id="default">+</span><span id="number">1j</span><span id="default"> </span><span id="comment"># ini juga complex</span><br><span id="identifier">e</span><span id="default"> = </span><span id="string">&#x27;string&#x27;</span><span id="default"> </span><span id="comment"># str</span><br><span id="identifier">f</span><span id="default"> = </span><span id="string">&quot;string&quot;</span><span id="default"> </span><span id="comment"># ini juga str (beda kutipan saja)</span><br><span id="identifier">g</span><span id="default"> = </span><span id="string">r&#x27;raw&#x27;</span><span id="default"> </span><span id="comment"># raw str (string mentah tidak memproses escape)</span><br><span id="identifier">h</span><span id="default"> = </span><span id="string">b&#x27;bytes&#x27;</span><span id="default"> </span><span id="comment"># bytes</span><br><span id="identifier">i</span><span id="default"> = </span><span id="keyword-identifier">True</span><span id="default"> </span><span id="comment"># bool</span><br><span id="identifier">j</span><span id="default"> = </span><span id="keyword-identifier">False</span><span id="default"> </span><span id="comment"># ini juga bool (lawannya)</span><br><span id="identifier">k</span><span id="default"> = </span><span id="keyword-identifier">None</span><span id="default"> </span><span id="comment"># NoneType (tidak ada nilai)</span><br><span id="identifier">l</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">]</span><span id="default"> </span><span id="comment"># list</span><br><span id="identifier">m</span><span id="default"> = </span><span id="parenthesis-0">(</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># tuple</span><br><span id="identifier">n</span><span id="default"> = </span><span id="parenthesis-0">{</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">}</span><span id="default"> </span><span id="comment"># set (himpunan)</span><br><span id="identifier">o</span><span id="default"> = </span><span id="parenthesis-0">{</span><span id="string">&#x27;a&#x27;</span><span id="default">: </span><span id="number">1</span><span id="parenthesis-0">}</span><span id="default"> </span><span id="comment"># dict (dictionary atau kamus)</span></pre>
90
90
 
91
91
  Sebenarnya masih banyak pembahasan soal tipe data dan objek ini, Anda bisa mempelajarinya lebih dalam dari Python. Mungkin beberapa hal yang perlu Anda ketahui bahwa tidak semua literal Python bisa di tulis secara langsung di PyScript. Misalnya f-string atau formated string, untuk menulis literalnya di Python anda cukup beri prefix di string `f` seperti ini:
92
92
  ```py
@@ -162,7 +162,7 @@ Fungsi ini menggantikan sintaks Python yang ini:
162
162
  ```py
163
163
  [wrap(i) for i in init if condition(i)]
164
164
  ```
165
- Parameter `wrap` adalah berupa fungsi untuk menghasilkan nilai baru, parameter `condition` adalah berupa fungsi untuk memfilter nilai.
165
+ Parameter `wrap` adalah berupa fungsi untuk menghasilkan nilai baru, parameter `condition` adalah berupa fungsi untuk memfilter iterasi nilai.
166
166
 
167
167
  - `isobjectof` (_`isobjectof(obj, class_or_tuple)`_) <br>
168
168
  Fungsi ini mirip dengan fungsi _builtins_ Python `isinstance`, tetapi ini juga termasuk mengecek parameter `obj` adakah objek itu turunan dari `class_or_tuple` yang diberikan jika `obj` adalah berupa `type`.
@@ -203,12 +203,12 @@ Sisanya adalah operasi unik:
203
203
  <pre class="pyscript-code"><span id="keyword-identifier">None</span><span id="default"> ?? </span><span id="number">0</span><span id="default"> </span><span id="comment"># operasi nullish (beda dengan or ia hanya peduli dengan nilai None)</span><br><span id="keyword-identifier">True</span><span id="default"> ? </span><span id="string">&quot;Benar&quot;</span><span id="default"> : </span><span id="string">&quot;Salah&quot;</span><span id="default"> </span><span id="comment"># operasi terner</span><br><br><span id="identifier">a</span><span id="default"> = </span><span id="number">0</span><br><br><span id="identifier">a</span><span id="default">++ </span><span id="comment"># operasi jumlahkan (menghasilkan nilai a sebelum di jumlahkan 1)</span><br><span id="default">++</span><span id="identifier">a</span><span id="default"> </span><span id="comment"># operasi jumlahkan (menghasilkan nilai a di tambahkan 1)</span><br><span id="identifier">a</span><span id="default">-- </span><span id="comment"># operasi kurangkan</span><br><span id="default">--</span><span id="identifier">a</span><span id="default"> </span><span id="comment"># operasi kurangkan</span></pre>
204
204
 
205
205
  ### Operasi Penugasan
206
- Anda baru saja mempelajari cara menyimpan nilai ke sebuah variabel dan soal _unpacking variable_ itu semua adalah operasi penugasan. Operasi penugasan tidak berupa sama dengan `=`, tapi bisa operasi nilai seperti yang di sebutkan di atas berupa operasi-operasi, ini adalah cara sederhana memaksudkan arti `a = a <operasi> b` menjadi `a <operasi>= b`. Berikut ini contohnya:
207
- <pre class="pyscript-code"><span id="identifier">a</span><span id="default"> = </span><span id="number">0</span><br><br><span id="identifier">a</span><span id="default"> += </span><span id="number">2</span><br><span id="identifier">a</span><span id="default"> -= </span><span id="number">1</span><br><span id="identifier">a</span><span id="default"> *= </span><span id="number">10</span><br><span id="identifier">a</span><span id="default"> /= </span><span id="number">2</span><br><span id="identifier">a</span><span id="default"> //= </span><span id="number">2</span><br><span id="identifier">a</span><span id="default"> %= </span><span id="number">3</span><br><span id="identifier">a</span><span id="default"> **= </span><span id="number">2</span><br><br><span id="identifier">b</span><span id="default"> = </span><span id="identifier">numpy</span><span id="default">.</span><span id="identifier-call">array</span><span id="parenthesis-0">(</span><span id="parenthesis-1">[</span><span id="number">2</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-1">]</span><span id="parenthesis-0">)</span><br><span id="identifier">b</span><span id="default"> @= </span><span id="identifier">numpy</span><span id="default">.</span><span id="identifier-call">array</span><span id="parenthesis-0">(</span><span id="parenthesis-1">[</span><span id="number">2</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-1">]</span><span id="parenthesis-0">)</span><br><br><span id="identifier">c</span><span id="default"> = </span><span id="number">8</span><br><span id="identifier">c</span><span id="default"> &amp;= </span><span id="number">8</span><br><span id="identifier">c</span><span id="default"> |= </span><span id="number">16</span><br><span id="identifier">c</span><span id="default"> ^= </span><span id="number">2</span><br><span id="identifier">c</span><span id="default"> &lt;&lt;= </span><span id="number">2</span><br><span id="identifier">c</span><span id="default"> &gt;&gt;= </span><span id="number">2</span></pre>
206
+ Anda baru saja mempelajari cara menyimpan nilai ke sebuah variabel dan soal _unpacking variable_, itu semua adalah operasi penugasan. Operasi penugasan tidak berupa sama dengan `=`, tapi bisa operasi nilai seperti yang di sebutkan di atas berupa operasi-operasi, ini adalah cara sederhana memaksudkan arti `a = a <operasi> b` menjadi `a <operasi>= b`. Berikut ini contohnya:
207
+ <pre class="pyscript-code"><span id="identifier">a</span><span id="default"> = </span><span id="number">0</span><br><br><span id="identifier">a</span><span id="default"> += </span><span id="number">2</span><br><span id="identifier">a</span><span id="default"> -= </span><span id="number">1</span><br><span id="identifier">a</span><span id="default"> *= </span><span id="number">10</span><br><span id="identifier">a</span><span id="default"> /= </span><span id="number">2</span><br><span id="identifier">a</span><span id="default"> //= </span><span id="number">2</span><br><span id="identifier">a</span><span id="default"> %= </span><span id="number">3</span><br><span id="identifier">a</span><span id="default"> **= </span><span id="number">2</span><br><br><span id="identifier">b</span><span id="default"> = ...</span><br><span id="identifier">b</span><span id="default"> @= ...</span><br><br><span id="identifier">c</span><span id="default"> = </span><span id="number">8</span><br><span id="identifier">c</span><span id="default"> &amp;= </span><span id="number">8</span><br><span id="identifier">c</span><span id="default"> |= </span><span id="number">16</span><br><span id="identifier">c</span><span id="default"> ^= </span><span id="number">2</span><br><span id="identifier">c</span><span id="default"> &lt;&lt;= </span><span id="number">2</span><br><span id="identifier">c</span><span id="default"> &gt;&gt;= </span><span id="number">2</span></pre>
208
208
 
209
209
  ### Blok kode
210
210
  Blok kode dalam PyScript mengikuti bahasa seperti JavaScript, C, C++, dan sesamanya yang dimana menggunakan tanda kurung keriting `{}` untuk menyertakan bagian blok kode. Kadang, jika blok kode hanya berupa 1 statemen maka Anda bisa langsung menulis statemen itu tanpa perlu menggunakan tanda kurung.
211
- <pre class="pyscript-code"><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">kondisi</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="comment"># blok kode</span><br><span id="parenthesis-0">}</span><br><br><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">kondisi</span><span id="parenthesis-0">)</span><span id="default"> ... </span><span id="comment"># blok kode tunggal</span><br><br><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">fufu</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-1">(</span><span id="keyword-identifier">not</span><span id="default"> </span><span id="identifier">a</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="keyword">return</span><span id="default">; </span><span id="comment"># statemen return seperti ini harus diberi</span><br><span id="default"> </span><span id="comment"># titik koma sebagai akhir statemen agar</span><br><span id="default"> </span><span id="comment"># tidak bocor ke statemen bawahnya</span><br><span id="default"> </span><span id="identifier">b</span><span id="default"> = </span><span id="identifier">a</span><br><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="identifier">a</span><br><span id="parenthesis-0">}</span><br><br><span id="comment"># kesalahan fatal (sulit diketahui karena apa)</span><br><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">fafa</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-1">(</span><span id="keyword-identifier">not</span><span id="default"> </span><span id="identifier">a</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="comment"># tidak ada tanda koma</span><br><span id="default"> </span><span id="identifier">b</span><span id="default"> = </span><span id="identifier">a</span><span id="default"> </span><span id="comment"># parser mengiranya akan berupa return b</span><br><span id="default"> </span><span id="comment"># bukan return, hasilnya terjadi kesalahan di &#x27;=&#x27;</span><br><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="identifier">a</span><br><span id="parenthesis-0">}</span><br><br><span id="identifier">loop</span><span id="default"> = </span><span id="number">100</span><br><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">loop</span><span id="default">--</span><span id="parenthesis-0">)</span><span id="default">; </span><span id="comment"># tanpa ada blok kode sama sekali (tidak berlaku</span><br><span id="default"> </span><span id="comment"># untuk semuanya kadang suatu statemen perlu blok kode)</span><br><span id="default"> </span><span id="comment"># sekali lagi jangan lupakan titik koma!</span></pre>
211
+ <pre class="pyscript-code"><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">kondisi</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="comment"># blok kode</span><br><span id="parenthesis-0">}</span><br><br><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">kondisi</span><span id="parenthesis-0">)</span><span id="default"> ... </span><span id="comment"># blok kode tunggal</span><br><br><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">fufu</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-1">(</span><span id="keyword-identifier">not</span><span id="default"> </span><span id="identifier">a</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="keyword">return</span><span id="default">; </span><span id="comment"># statemen return seperti ini harus diberi</span><br><span id="default"> </span><span id="comment"># titik koma sebagai akhir statemen agar</span><br><span id="default"> </span><span id="comment"># tidak bocor ke statemen bawahnya</span><br><span id="default"> </span><span id="identifier">b</span><span id="default"> = </span><span id="identifier">a</span><br><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="identifier">a</span><br><span id="parenthesis-0">}</span><br><br><span id="comment"># kesalahan fatal (sulit diketahui karena apa)</span><br><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">fafa</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-1">(</span><span id="keyword-identifier">not</span><span id="default"> </span><span id="identifier">a</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="comment"># tidak ada tanda koma</span><br><span id="default"> </span><span id="identifier">b</span><span id="default"> = </span><span id="identifier">a</span><span id="default"> </span><span id="comment"># parser mengiranya akan berupa return b = a</span><br><span id="default"> </span><span id="comment"># bukan return, hasilnya terjadi kesalahan di &#x27;=&#x27;</span><br><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="identifier">a</span><br><span id="parenthesis-0">}</span><br><br><span id="identifier">loop</span><span id="default"> = </span><span id="number">100</span><br><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">loop</span><span id="default">--</span><span id="parenthesis-0">)</span><span id="default">; </span><span id="comment"># tanpa ada blok kode sama sekali (tidak berlaku</span><br><span id="default"> </span><span id="comment"># untuk semuanya kadang suatu statemen perlu blok kode)</span><br><span id="default"> </span><span id="comment"># sekali lagi jangan lupakan titik koma!</span></pre>
212
212
 
213
213
  ### Statemen _if-elif-else_
214
214
  Statemen ini berfungsi untuk mengecek suatu nilai kondisi dimana jika kondisi itu benar, maka blok kodenya akan dieksekusi. _elif_ atau singkatan dari _else if_ adalah lanjutan blok kondisi jika kondisi di atasnya tidak terpenuhi sampai jika semuanya tidak terpenuhi maka akan menuju blok _else_.
@@ -216,15 +216,15 @@ Statemen ini berfungsi untuk mengecek suatu nilai kondisi dimana jika kondisi it
216
216
 
217
217
  ### Statemen _for_
218
218
  Statemen ini adalah statemen perulangan dimana biasanya perulangannya sudah di ketahui berapa kali.
219
- <pre class="pyscript-code"><span id="comment"># perulangan 0 sampai 4 (totalnya 5 perulangan)</span><br><span id="keyword">for</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">i</span><span id="default"> = </span><span id="number">0</span><span id="default">; </span><span id="identifier">i</span><span id="default"> &lt; </span><span id="number">5</span><span id="default">; </span><span id="identifier">i</span><span id="default">++</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;i ke&quot;</span><span id="default">, </span><span id="identifier">i</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><br><br><span id="comment"># strukturnya:</span><br><span id="comment"># for (&lt;initilisasi&gt;; &lt;kondisi&gt;; &lt;pembaruan&gt;) &lt;blok perulangannnya&gt;</span><br><br><span id="comment"># for-each (perulangan tiap elemen)</span><br><span id="identifier">element</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">3</span><span id="default">, </span><span id="number">4</span><span id="default">, </span><span id="number">5</span><span id="parenthesis-0">]</span><br><span id="keyword">for</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">i</span><span id="default"> </span><span id="keyword-identifier">of</span><span id="default"> </span><span id="identifier">element</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;i ke&quot;</span><span id="default">, </span><span id="identifier">i</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span></pre>
219
+ <pre class="pyscript-code"><span id="comment"># perulangan 0 sampai 4 (totalnya 5 perulangan)</span><br><span id="keyword">for</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">i</span><span id="default"> = </span><span id="number">0</span><span id="default">; </span><span id="identifier">i</span><span id="default"> &lt; </span><span id="number">5</span><span id="default">; </span><span id="identifier">i</span><span id="default">++</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;i ke&quot;</span><span id="default">, </span><span id="identifier">i</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><br><br><span id="comment"># strukturnya:</span><br><span id="comment"># for (&lt;initilisasi&gt;; &lt;kondisi&gt;; &lt;pembaruan&gt;) &lt;blok perulangannnya&gt;</span><br><br><span id="comment"># for-each (perulangan tiap elemen)</span><br><span id="identifier">element</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">3</span><span id="default">, </span><span id="number">4</span><span id="default">, </span><span id="number">5</span><span id="parenthesis-0">]</span><br><span id="keyword">for</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">i</span><span id="default"> </span><span id="keyword-identifier">of</span><span id="default"> </span><span id="identifier">element</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;i ke&quot;</span><span id="default">, </span><span id="identifier">i</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><br><br><span id="comment"># dengan blok else (diesekusi jika loop berhenti tanpa break)</span><br><span id="keyword">for</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">i</span><span id="default"> </span><span id="keyword-identifier">of</span><span id="default"> </span><span id="identifier-class">range</span><span id="parenthesis-1">(</span><span id="number">5</span><span id="parenthesis-1">)</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="identifier">i</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><span id="default"> </span><span id="keyword">else</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;Selesai tanpa break&quot;</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span></pre>
220
220
 
221
221
  ### Statemen _while_
222
222
  Statemen ini juga perulangan mirip dengan statemen _for_, tapi bedanya ini perulangannya belum diketahui sampai akhirnya kondisinya salah atau tidak memenuhi.
223
- <pre class="pyscript-code"><span id="identifier">selesai</span><span id="default"> = </span><span id="keyword-identifier">False</span><br><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="keyword-identifier">not</span><span id="default"> </span><span id="identifier">selesai</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier">masukan</span><span id="default"> = </span><span id="identifier-call">input</span><span id="parenthesis-1">(</span><span id="string">&quot;Ketik sesuatu (keluar untuk keluar): &quot;</span><span id="parenthesis-1">)</span><br><span id="default"> </span><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-1">(</span><span id="identifier">masukan</span><span id="default">.</span><span id="identifier-call">strip</span><span id="parenthesis-2">()</span><span id="default">.</span><span id="identifier-call">lower</span><span id="parenthesis-2">()</span><span id="default"> == </span><span id="string">&#x27;keluar&#x27;</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="parenthesis-1">{</span><br><span id="default"> </span><span id="identifier">selesai</span><span id="default"> = </span><span id="keyword-identifier">True</span><br><span id="default"> </span><span id="parenthesis-1">}</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;Anda memasukan:&quot;</span><span id="default">, </span><span id="identifier">masukan</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span></pre>
223
+ <pre class="pyscript-code"><span id="identifier">selesai</span><span id="default"> = </span><span id="keyword-identifier">False</span><br><br><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="keyword-identifier">not</span><span id="default"> </span><span id="identifier">selesai</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier">masukan</span><span id="default"> = </span><span id="identifier-call">input</span><span id="parenthesis-1">(</span><span id="string">&quot;Ketik sesuatu (keluar untuk keluar): &quot;</span><span id="parenthesis-1">)</span><br><br><span id="default"> </span><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-1">(</span><span id="identifier">masukan</span><span id="default">.</span><span id="identifier-call">strip</span><span id="parenthesis-2">()</span><span id="default">.</span><span id="identifier-call">lower</span><span id="parenthesis-2">()</span><span id="default"> == </span><span id="string">&#x27;keluar&#x27;</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="parenthesis-1">{</span><br><span id="default"> </span><span id="identifier">selesai</span><span id="default"> = </span><span id="keyword-identifier">True</span><br><span id="default"> </span><span id="parenthesis-1">}</span><br><span id="default"> </span><span id="keyword">else</span><span id="default"> </span><span id="parenthesis-1">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-2">(</span><span id="string">&quot;Anda memasukan:&quot;</span><span id="default">, </span><span id="identifier">masukan</span><span id="parenthesis-2">)</span><br><span id="default"> </span><span id="parenthesis-1">}</span><br><span id="parenthesis-0">}</span><br><br><span id="identifier">i</span><span id="default"> = </span><span id="number">5</span><br><br><span id="comment"># dengan blok else</span><br><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">i</span><span id="parenthesis-0">){</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="identifier">i</span><span id="default">--</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><span id="default"> </span><span id="keyword">else</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;Selesai tanpa break&quot;</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span></pre>
224
224
 
225
225
  ### Statemen _do-while_
226
226
  Statemen perulangan ini mirip dengan statemen _while_, bedanya adalah blok kode setidaknya dijalankan sekali meski kondisinya salah atau tidak memenuhi sejak awal.
227
- <pre class="pyscript-code"><span id="identifier">selanjutnya</span><span id="default"> = </span><span id="keyword-identifier">False</span><br><span id="keyword">do</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;Selanjutnya&quot;</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><span id="default"> </span><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">selanjutnya</span><span id="parenthesis-0">)</span></pre>
227
+ <pre class="pyscript-code"><span id="identifier">selanjutnya</span><span id="default"> = </span><span id="keyword-identifier">False</span><br><span id="keyword">do</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;Selanjutnya&quot;</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><span id="default"> </span><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">selanjutnya</span><span id="parenthesis-0">)</span><br><br><span id="identifier">i</span><span id="default"> = </span><span id="number">0</span><br><br><span id="comment"># dengan blok else</span><br><span id="keyword">do</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier">i</span><span id="default">++</span><br><span id="parenthesis-0">}</span><span id="default"> </span><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">i</span><span id="default"> &lt; </span><span id="number">5</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="keyword">else</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;Selesai tanpa break&quot;</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span></pre>
228
228
 
229
229
  ### Statemen _switch-case-default_
230
230
  Statemen ini adalah bentuk kontrol untuk memilih suatu aksi dari target nilai yang diberikan untuk dijalankan.
@@ -8,8 +8,8 @@ PyScript adalah bahasa pemprograman sederhana yang dibuat di atas bahasa Python.
8
8
 
9
9
  ## Bagaimana Cara Pemasangannya?
10
10
  1. Pertama-tama Anda perlu mengunduh Python terlebih dahulu. Usahakan versi yang digunakan sudah paling terbaru di atas versi `3.5` agar kode bisa di jalankan dengan benar. Kunjungi [website resmi Python](https://python.org) untuk mengunduhnya.
11
- 2. Setelah mengunduh dan melakukan beberapa konfigurasi aplikasi Python, unduh repositori ini atau melalui direktori `pyscript` atau dengan perintah `python -m pip install pyscript-programming-language` (_Direkomendasikan_).
12
- 3. Sekarang coba Anda jalankan PyScript shell (REPL) dengan perintah `python -m pyscript`. Jika berhasil maka harusnya anda akan melihat versi, tanggal dan tanda `>>>`.
11
+ 2. Setelah mengunduh dan melakukan beberapa konfigurasi aplikasi Python, unduh repositori ini atau melalui direktori `pyscript` atau jika Anda sudah mengunduh Python gunakan dengan perintah `python -m pip install pyscript-programming-language` (_Direkomendasikan_).
12
+ 3. Sekarang silahkan Anda jalankan PyScript shell (_REPL_) dengan perintah `python -m pyscript`. Jika berhasil maka harusnya Anda akan melihat versi, tanggal dan tanda `>>>`.
13
13
  4. _OPSIONAL_. Anda bisa mengunduh dan menyiapkan kode editor seperti VS Code atau kode editor lainnya untuk menulis program. Atau kalau mau yang berbeda Anda bisa menggunakan Notepad.
14
14
  5. Jika semua sudah aman dan berjalan dengan benar, sekarang Anda sudah bisa masuk ke sesi pengenalan bahasa PyScript!
15
15
 
@@ -42,8 +42,8 @@ Di sesi ini, Anda akan mempelajari semua aspek bahasa dalam bahasa PyScript yang
42
42
  Pertama-tama Anda akan mempelajari tentang komentar, komentar adalah cara kita memberikan penjelasan tertentu pada blok kita agar jika suatu nanti atau orang lain bisa mengetahui maksud kode yang Anda tulis. Komentar di PyScript mirip dengan Python dimana ia dikuti dengan pagar `#` lalu setelah itu Anda bisa memberikan komentar. Komentar tidak diesekusi oleh program.
43
43
  <pre class="pyscript-code"><span id="comment"># Ini adalah komentar</span><br><br><span id="comment"># Ini mencetak kata &quot;Halo!&quot; ke layar</span><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="string">&quot;Halo!&quot;</span><span id="parenthesis-0">)</span><br><br><span id="number">1</span><span id="default"> + </span><span id="number">1</span><span id="default"> </span><span id="comment"># Ekspresi</span></pre>
44
44
 
45
- ### Variabel
46
- Variabel secara singkat yakni menyimpan suatu nilai. Pasti harusnya Anda sudah tidak asing dengan variabel. Variabel di buat sebagai berikut ini:
45
+ ### Membuat Variabel (Operasi Penugasan)
46
+ Variabel secara singkat yakni menyimpan suatu nilai. Seharusnya Anda sudah tidak asing dengan variabel. Variabel di buat sebagai berikut ini:
47
47
  <pre class="pyscript-code"><span id="identifier">x</span><span id="default"> = </span><span id="number">1</span><br><span id="identifier">y</span><span id="default"> = </span><span id="number">1</span><br><span id="identifier">z</span><span id="default"> = </span><span id="number">1</span></pre>
48
48
 
49
49
  Di bahasa Python pun juga sama, kita membuat suatu nama lalu di lanjutkan tanda sama dengan lalu nilai yang mau kita isi.
@@ -55,7 +55,7 @@ Anda juga bisa sekaligus menyimpan lebih dari 1 variabel dengan hanya 1 nilai se
55
55
 
56
56
  ### Objek dan Tipe Data
57
57
  Di PyScript sebenarnya objek dan tipe data di atur oleh Python. Jadi semua objek serta sifat-sifat dan fungsi-fungsinya semuanya di atur dari Python. Berikut ini beberapa objek literal dari Python/PyScript:
58
- <pre class="pyscript-code"><span id="identifier">a</span><span id="default"> = </span><span id="number">1</span><span id="default"> </span><span id="comment"># int</span><br><span id="identifier">b</span><span id="default"> = </span><span id="number">1.0</span><span id="default"> </span><span id="comment"># float</span><br><span id="identifier">c</span><span id="default"> = </span><span id="number">1j</span><span id="default"> </span><span id="comment"># complex</span><br><span id="identifier">d</span><span id="default"> = </span><span id="number">1</span><span id="default">+</span><span id="number">1j</span><span id="default"> </span><span id="comment"># ini juga complex</span><br><span id="identifier">e</span><span id="default"> = </span><span id="string">&#x27;string&#x27;</span><span id="default"> </span><span id="comment"># ini str</span><br><span id="identifier">f</span><span id="default"> = </span><span id="string">&quot;string&quot;</span><span id="default"> </span><span id="comment"># ini juga str (beda kutipan saja)</span><br><span id="identifier">g</span><span id="default"> = </span><span id="string">r&#x27;raw&#x27;</span><span id="default"> </span><span id="comment"># ini raw str (string mentah tidak memproses escape)</span><br><span id="identifier">h</span><span id="default"> = </span><span id="string">b&#x27;bytes&#x27;</span><span id="default"> </span><span id="comment"># ini bytes</span><br><span id="identifier">i</span><span id="default"> = </span><span id="keyword-identifier">True</span><span id="default"> </span><span id="comment"># ini bool</span><br><span id="identifier">j</span><span id="default"> = </span><span id="keyword-identifier">False</span><span id="default"> </span><span id="comment"># ini juga bool (lawannya)</span><br><span id="identifier">k</span><span id="default"> = </span><span id="keyword-identifier">None</span><span id="default"> </span><span id="comment"># ini NoneType (tidak ada nilai)</span><br><span id="identifier">l</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">]</span><span id="default"> </span><span id="comment"># ini list</span><br><span id="identifier">m</span><span id="default"> = </span><span id="parenthesis-0">(</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># ini tuple</span><br><span id="identifier">n</span><span id="default"> = </span><span id="parenthesis-0">{</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">}</span><span id="default"> </span><span id="comment"># ini set (himpunan)</span><br><span id="identifier">o</span><span id="default"> = </span><span id="parenthesis-0">{</span><span id="string">&#x27;a&#x27;</span><span id="default">: </span><span id="number">1</span><span id="parenthesis-0">}</span><span id="default"> </span><span id="comment"># ini dict (dictionary atau kamus)</span></pre>
58
+ <pre class="pyscript-code"><span id="identifier">a</span><span id="default"> = </span><span id="number">1</span><span id="default"> </span><span id="comment"># int</span><br><span id="identifier">b</span><span id="default"> = </span><span id="number">1.0</span><span id="default"> </span><span id="comment"># float</span><br><span id="identifier">c</span><span id="default"> = </span><span id="number">1j</span><span id="default"> </span><span id="comment"># complex</span><br><span id="identifier">d</span><span id="default"> = </span><span id="number">1</span><span id="default">+</span><span id="number">1j</span><span id="default"> </span><span id="comment"># ini juga complex</span><br><span id="identifier">e</span><span id="default"> = </span><span id="string">&#x27;string&#x27;</span><span id="default"> </span><span id="comment"># str</span><br><span id="identifier">f</span><span id="default"> = </span><span id="string">&quot;string&quot;</span><span id="default"> </span><span id="comment"># ini juga str (beda kutipan saja)</span><br><span id="identifier">g</span><span id="default"> = </span><span id="string">r&#x27;raw&#x27;</span><span id="default"> </span><span id="comment"># raw str (string mentah tidak memproses escape)</span><br><span id="identifier">h</span><span id="default"> = </span><span id="string">b&#x27;bytes&#x27;</span><span id="default"> </span><span id="comment"># bytes</span><br><span id="identifier">i</span><span id="default"> = </span><span id="keyword-identifier">True</span><span id="default"> </span><span id="comment"># bool</span><br><span id="identifier">j</span><span id="default"> = </span><span id="keyword-identifier">False</span><span id="default"> </span><span id="comment"># ini juga bool (lawannya)</span><br><span id="identifier">k</span><span id="default"> = </span><span id="keyword-identifier">None</span><span id="default"> </span><span id="comment"># NoneType (tidak ada nilai)</span><br><span id="identifier">l</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">]</span><span id="default"> </span><span id="comment"># list</span><br><span id="identifier">m</span><span id="default"> = </span><span id="parenthesis-0">(</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># tuple</span><br><span id="identifier">n</span><span id="default"> = </span><span id="parenthesis-0">{</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">}</span><span id="default"> </span><span id="comment"># set (himpunan)</span><br><span id="identifier">o</span><span id="default"> = </span><span id="parenthesis-0">{</span><span id="string">&#x27;a&#x27;</span><span id="default">: </span><span id="number">1</span><span id="parenthesis-0">}</span><span id="default"> </span><span id="comment"># dict (dictionary atau kamus)</span></pre>
59
59
 
60
60
  Sebenarnya masih banyak pembahasan soal tipe data dan objek ini, Anda bisa mempelajarinya lebih dalam dari Python. Mungkin beberapa hal yang perlu Anda ketahui bahwa tidak semua literal Python bisa di tulis secara langsung di PyScript. Misalnya f-string atau formated string, untuk menulis literalnya di Python anda cukup beri prefix di string `f` seperti ini:
61
61
  ```py
@@ -131,7 +131,7 @@ Fungsi ini menggantikan sintaks Python yang ini:
131
131
  ```py
132
132
  [wrap(i) for i in init if condition(i)]
133
133
  ```
134
- Parameter `wrap` adalah berupa fungsi untuk menghasilkan nilai baru, parameter `condition` adalah berupa fungsi untuk memfilter nilai.
134
+ Parameter `wrap` adalah berupa fungsi untuk menghasilkan nilai baru, parameter `condition` adalah berupa fungsi untuk memfilter iterasi nilai.
135
135
 
136
136
  - `isobjectof` (_`isobjectof(obj, class_or_tuple)`_) <br>
137
137
  Fungsi ini mirip dengan fungsi _builtins_ Python `isinstance`, tetapi ini juga termasuk mengecek parameter `obj` adakah objek itu turunan dari `class_or_tuple` yang diberikan jika `obj` adalah berupa `type`.
@@ -172,12 +172,12 @@ Sisanya adalah operasi unik:
172
172
  <pre class="pyscript-code"><span id="keyword-identifier">None</span><span id="default"> ?? </span><span id="number">0</span><span id="default"> </span><span id="comment"># operasi nullish (beda dengan or ia hanya peduli dengan nilai None)</span><br><span id="keyword-identifier">True</span><span id="default"> ? </span><span id="string">&quot;Benar&quot;</span><span id="default"> : </span><span id="string">&quot;Salah&quot;</span><span id="default"> </span><span id="comment"># operasi terner</span><br><br><span id="identifier">a</span><span id="default"> = </span><span id="number">0</span><br><br><span id="identifier">a</span><span id="default">++ </span><span id="comment"># operasi jumlahkan (menghasilkan nilai a sebelum di jumlahkan 1)</span><br><span id="default">++</span><span id="identifier">a</span><span id="default"> </span><span id="comment"># operasi jumlahkan (menghasilkan nilai a di tambahkan 1)</span><br><span id="identifier">a</span><span id="default">-- </span><span id="comment"># operasi kurangkan</span><br><span id="default">--</span><span id="identifier">a</span><span id="default"> </span><span id="comment"># operasi kurangkan</span></pre>
173
173
 
174
174
  ### Operasi Penugasan
175
- Anda baru saja mempelajari cara menyimpan nilai ke sebuah variabel dan soal _unpacking variable_ itu semua adalah operasi penugasan. Operasi penugasan tidak berupa sama dengan `=`, tapi bisa operasi nilai seperti yang di sebutkan di atas berupa operasi-operasi, ini adalah cara sederhana memaksudkan arti `a = a <operasi> b` menjadi `a <operasi>= b`. Berikut ini contohnya:
176
- <pre class="pyscript-code"><span id="identifier">a</span><span id="default"> = </span><span id="number">0</span><br><br><span id="identifier">a</span><span id="default"> += </span><span id="number">2</span><br><span id="identifier">a</span><span id="default"> -= </span><span id="number">1</span><br><span id="identifier">a</span><span id="default"> *= </span><span id="number">10</span><br><span id="identifier">a</span><span id="default"> /= </span><span id="number">2</span><br><span id="identifier">a</span><span id="default"> //= </span><span id="number">2</span><br><span id="identifier">a</span><span id="default"> %= </span><span id="number">3</span><br><span id="identifier">a</span><span id="default"> **= </span><span id="number">2</span><br><br><span id="identifier">b</span><span id="default"> = </span><span id="identifier">numpy</span><span id="default">.</span><span id="identifier-call">array</span><span id="parenthesis-0">(</span><span id="parenthesis-1">[</span><span id="number">2</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-1">]</span><span id="parenthesis-0">)</span><br><span id="identifier">b</span><span id="default"> @= </span><span id="identifier">numpy</span><span id="default">.</span><span id="identifier-call">array</span><span id="parenthesis-0">(</span><span id="parenthesis-1">[</span><span id="number">2</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-1">]</span><span id="parenthesis-0">)</span><br><br><span id="identifier">c</span><span id="default"> = </span><span id="number">8</span><br><span id="identifier">c</span><span id="default"> &amp;= </span><span id="number">8</span><br><span id="identifier">c</span><span id="default"> |= </span><span id="number">16</span><br><span id="identifier">c</span><span id="default"> ^= </span><span id="number">2</span><br><span id="identifier">c</span><span id="default"> &lt;&lt;= </span><span id="number">2</span><br><span id="identifier">c</span><span id="default"> &gt;&gt;= </span><span id="number">2</span></pre>
175
+ Anda baru saja mempelajari cara menyimpan nilai ke sebuah variabel dan soal _unpacking variable_, itu semua adalah operasi penugasan. Operasi penugasan tidak berupa sama dengan `=`, tapi bisa operasi nilai seperti yang di sebutkan di atas berupa operasi-operasi, ini adalah cara sederhana memaksudkan arti `a = a <operasi> b` menjadi `a <operasi>= b`. Berikut ini contohnya:
176
+ <pre class="pyscript-code"><span id="identifier">a</span><span id="default"> = </span><span id="number">0</span><br><br><span id="identifier">a</span><span id="default"> += </span><span id="number">2</span><br><span id="identifier">a</span><span id="default"> -= </span><span id="number">1</span><br><span id="identifier">a</span><span id="default"> *= </span><span id="number">10</span><br><span id="identifier">a</span><span id="default"> /= </span><span id="number">2</span><br><span id="identifier">a</span><span id="default"> //= </span><span id="number">2</span><br><span id="identifier">a</span><span id="default"> %= </span><span id="number">3</span><br><span id="identifier">a</span><span id="default"> **= </span><span id="number">2</span><br><br><span id="identifier">b</span><span id="default"> = ...</span><br><span id="identifier">b</span><span id="default"> @= ...</span><br><br><span id="identifier">c</span><span id="default"> = </span><span id="number">8</span><br><span id="identifier">c</span><span id="default"> &amp;= </span><span id="number">8</span><br><span id="identifier">c</span><span id="default"> |= </span><span id="number">16</span><br><span id="identifier">c</span><span id="default"> ^= </span><span id="number">2</span><br><span id="identifier">c</span><span id="default"> &lt;&lt;= </span><span id="number">2</span><br><span id="identifier">c</span><span id="default"> &gt;&gt;= </span><span id="number">2</span></pre>
177
177
 
178
178
  ### Blok kode
179
179
  Blok kode dalam PyScript mengikuti bahasa seperti JavaScript, C, C++, dan sesamanya yang dimana menggunakan tanda kurung keriting `{}` untuk menyertakan bagian blok kode. Kadang, jika blok kode hanya berupa 1 statemen maka Anda bisa langsung menulis statemen itu tanpa perlu menggunakan tanda kurung.
180
- <pre class="pyscript-code"><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">kondisi</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="comment"># blok kode</span><br><span id="parenthesis-0">}</span><br><br><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">kondisi</span><span id="parenthesis-0">)</span><span id="default"> ... </span><span id="comment"># blok kode tunggal</span><br><br><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">fufu</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-1">(</span><span id="keyword-identifier">not</span><span id="default"> </span><span id="identifier">a</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="keyword">return</span><span id="default">; </span><span id="comment"># statemen return seperti ini harus diberi</span><br><span id="default"> </span><span id="comment"># titik koma sebagai akhir statemen agar</span><br><span id="default"> </span><span id="comment"># tidak bocor ke statemen bawahnya</span><br><span id="default"> </span><span id="identifier">b</span><span id="default"> = </span><span id="identifier">a</span><br><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="identifier">a</span><br><span id="parenthesis-0">}</span><br><br><span id="comment"># kesalahan fatal (sulit diketahui karena apa)</span><br><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">fafa</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-1">(</span><span id="keyword-identifier">not</span><span id="default"> </span><span id="identifier">a</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="comment"># tidak ada tanda koma</span><br><span id="default"> </span><span id="identifier">b</span><span id="default"> = </span><span id="identifier">a</span><span id="default"> </span><span id="comment"># parser mengiranya akan berupa return b</span><br><span id="default"> </span><span id="comment"># bukan return, hasilnya terjadi kesalahan di &#x27;=&#x27;</span><br><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="identifier">a</span><br><span id="parenthesis-0">}</span><br><br><span id="identifier">loop</span><span id="default"> = </span><span id="number">100</span><br><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">loop</span><span id="default">--</span><span id="parenthesis-0">)</span><span id="default">; </span><span id="comment"># tanpa ada blok kode sama sekali (tidak berlaku</span><br><span id="default"> </span><span id="comment"># untuk semuanya kadang suatu statemen perlu blok kode)</span><br><span id="default"> </span><span id="comment"># sekali lagi jangan lupakan titik koma!</span></pre>
180
+ <pre class="pyscript-code"><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">kondisi</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="comment"># blok kode</span><br><span id="parenthesis-0">}</span><br><br><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">kondisi</span><span id="parenthesis-0">)</span><span id="default"> ... </span><span id="comment"># blok kode tunggal</span><br><br><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">fufu</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-1">(</span><span id="keyword-identifier">not</span><span id="default"> </span><span id="identifier">a</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="keyword">return</span><span id="default">; </span><span id="comment"># statemen return seperti ini harus diberi</span><br><span id="default"> </span><span id="comment"># titik koma sebagai akhir statemen agar</span><br><span id="default"> </span><span id="comment"># tidak bocor ke statemen bawahnya</span><br><span id="default"> </span><span id="identifier">b</span><span id="default"> = </span><span id="identifier">a</span><br><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="identifier">a</span><br><span id="parenthesis-0">}</span><br><br><span id="comment"># kesalahan fatal (sulit diketahui karena apa)</span><br><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">fafa</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-1">(</span><span id="keyword-identifier">not</span><span id="default"> </span><span id="identifier">a</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="comment"># tidak ada tanda koma</span><br><span id="default"> </span><span id="identifier">b</span><span id="default"> = </span><span id="identifier">a</span><span id="default"> </span><span id="comment"># parser mengiranya akan berupa return b = a</span><br><span id="default"> </span><span id="comment"># bukan return, hasilnya terjadi kesalahan di &#x27;=&#x27;</span><br><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="identifier">a</span><br><span id="parenthesis-0">}</span><br><br><span id="identifier">loop</span><span id="default"> = </span><span id="number">100</span><br><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">loop</span><span id="default">--</span><span id="parenthesis-0">)</span><span id="default">; </span><span id="comment"># tanpa ada blok kode sama sekali (tidak berlaku</span><br><span id="default"> </span><span id="comment"># untuk semuanya kadang suatu statemen perlu blok kode)</span><br><span id="default"> </span><span id="comment"># sekali lagi jangan lupakan titik koma!</span></pre>
181
181
 
182
182
  ### Statemen _if-elif-else_
183
183
  Statemen ini berfungsi untuk mengecek suatu nilai kondisi dimana jika kondisi itu benar, maka blok kodenya akan dieksekusi. _elif_ atau singkatan dari _else if_ adalah lanjutan blok kondisi jika kondisi di atasnya tidak terpenuhi sampai jika semuanya tidak terpenuhi maka akan menuju blok _else_.
@@ -185,15 +185,15 @@ Statemen ini berfungsi untuk mengecek suatu nilai kondisi dimana jika kondisi it
185
185
 
186
186
  ### Statemen _for_
187
187
  Statemen ini adalah statemen perulangan dimana biasanya perulangannya sudah di ketahui berapa kali.
188
- <pre class="pyscript-code"><span id="comment"># perulangan 0 sampai 4 (totalnya 5 perulangan)</span><br><span id="keyword">for</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">i</span><span id="default"> = </span><span id="number">0</span><span id="default">; </span><span id="identifier">i</span><span id="default"> &lt; </span><span id="number">5</span><span id="default">; </span><span id="identifier">i</span><span id="default">++</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;i ke&quot;</span><span id="default">, </span><span id="identifier">i</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><br><br><span id="comment"># strukturnya:</span><br><span id="comment"># for (&lt;initilisasi&gt;; &lt;kondisi&gt;; &lt;pembaruan&gt;) &lt;blok perulangannnya&gt;</span><br><br><span id="comment"># for-each (perulangan tiap elemen)</span><br><span id="identifier">element</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">3</span><span id="default">, </span><span id="number">4</span><span id="default">, </span><span id="number">5</span><span id="parenthesis-0">]</span><br><span id="keyword">for</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">i</span><span id="default"> </span><span id="keyword-identifier">of</span><span id="default"> </span><span id="identifier">element</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;i ke&quot;</span><span id="default">, </span><span id="identifier">i</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span></pre>
188
+ <pre class="pyscript-code"><span id="comment"># perulangan 0 sampai 4 (totalnya 5 perulangan)</span><br><span id="keyword">for</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">i</span><span id="default"> = </span><span id="number">0</span><span id="default">; </span><span id="identifier">i</span><span id="default"> &lt; </span><span id="number">5</span><span id="default">; </span><span id="identifier">i</span><span id="default">++</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;i ke&quot;</span><span id="default">, </span><span id="identifier">i</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><br><br><span id="comment"># strukturnya:</span><br><span id="comment"># for (&lt;initilisasi&gt;; &lt;kondisi&gt;; &lt;pembaruan&gt;) &lt;blok perulangannnya&gt;</span><br><br><span id="comment"># for-each (perulangan tiap elemen)</span><br><span id="identifier">element</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">3</span><span id="default">, </span><span id="number">4</span><span id="default">, </span><span id="number">5</span><span id="parenthesis-0">]</span><br><span id="keyword">for</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">i</span><span id="default"> </span><span id="keyword-identifier">of</span><span id="default"> </span><span id="identifier">element</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;i ke&quot;</span><span id="default">, </span><span id="identifier">i</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><br><br><span id="comment"># dengan blok else (diesekusi jika loop berhenti tanpa break)</span><br><span id="keyword">for</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">i</span><span id="default"> </span><span id="keyword-identifier">of</span><span id="default"> </span><span id="identifier-class">range</span><span id="parenthesis-1">(</span><span id="number">5</span><span id="parenthesis-1">)</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="identifier">i</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><span id="default"> </span><span id="keyword">else</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;Selesai tanpa break&quot;</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span></pre>
189
189
 
190
190
  ### Statemen _while_
191
191
  Statemen ini juga perulangan mirip dengan statemen _for_, tapi bedanya ini perulangannya belum diketahui sampai akhirnya kondisinya salah atau tidak memenuhi.
192
- <pre class="pyscript-code"><span id="identifier">selesai</span><span id="default"> = </span><span id="keyword-identifier">False</span><br><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="keyword-identifier">not</span><span id="default"> </span><span id="identifier">selesai</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier">masukan</span><span id="default"> = </span><span id="identifier-call">input</span><span id="parenthesis-1">(</span><span id="string">&quot;Ketik sesuatu (keluar untuk keluar): &quot;</span><span id="parenthesis-1">)</span><br><span id="default"> </span><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-1">(</span><span id="identifier">masukan</span><span id="default">.</span><span id="identifier-call">strip</span><span id="parenthesis-2">()</span><span id="default">.</span><span id="identifier-call">lower</span><span id="parenthesis-2">()</span><span id="default"> == </span><span id="string">&#x27;keluar&#x27;</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="parenthesis-1">{</span><br><span id="default"> </span><span id="identifier">selesai</span><span id="default"> = </span><span id="keyword-identifier">True</span><br><span id="default"> </span><span id="parenthesis-1">}</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;Anda memasukan:&quot;</span><span id="default">, </span><span id="identifier">masukan</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span></pre>
192
+ <pre class="pyscript-code"><span id="identifier">selesai</span><span id="default"> = </span><span id="keyword-identifier">False</span><br><br><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="keyword-identifier">not</span><span id="default"> </span><span id="identifier">selesai</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier">masukan</span><span id="default"> = </span><span id="identifier-call">input</span><span id="parenthesis-1">(</span><span id="string">&quot;Ketik sesuatu (keluar untuk keluar): &quot;</span><span id="parenthesis-1">)</span><br><br><span id="default"> </span><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-1">(</span><span id="identifier">masukan</span><span id="default">.</span><span id="identifier-call">strip</span><span id="parenthesis-2">()</span><span id="default">.</span><span id="identifier-call">lower</span><span id="parenthesis-2">()</span><span id="default"> == </span><span id="string">&#x27;keluar&#x27;</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="parenthesis-1">{</span><br><span id="default"> </span><span id="identifier">selesai</span><span id="default"> = </span><span id="keyword-identifier">True</span><br><span id="default"> </span><span id="parenthesis-1">}</span><br><span id="default"> </span><span id="keyword">else</span><span id="default"> </span><span id="parenthesis-1">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-2">(</span><span id="string">&quot;Anda memasukan:&quot;</span><span id="default">, </span><span id="identifier">masukan</span><span id="parenthesis-2">)</span><br><span id="default"> </span><span id="parenthesis-1">}</span><br><span id="parenthesis-0">}</span><br><br><span id="identifier">i</span><span id="default"> = </span><span id="number">5</span><br><br><span id="comment"># dengan blok else</span><br><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">i</span><span id="parenthesis-0">){</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="identifier">i</span><span id="default">--</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><span id="default"> </span><span id="keyword">else</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;Selesai tanpa break&quot;</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span></pre>
193
193
 
194
194
  ### Statemen _do-while_
195
195
  Statemen perulangan ini mirip dengan statemen _while_, bedanya adalah blok kode setidaknya dijalankan sekali meski kondisinya salah atau tidak memenuhi sejak awal.
196
- <pre class="pyscript-code"><span id="identifier">selanjutnya</span><span id="default"> = </span><span id="keyword-identifier">False</span><br><span id="keyword">do</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;Selanjutnya&quot;</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><span id="default"> </span><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">selanjutnya</span><span id="parenthesis-0">)</span></pre>
196
+ <pre class="pyscript-code"><span id="identifier">selanjutnya</span><span id="default"> = </span><span id="keyword-identifier">False</span><br><span id="keyword">do</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;Selanjutnya&quot;</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><span id="default"> </span><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">selanjutnya</span><span id="parenthesis-0">)</span><br><br><span id="identifier">i</span><span id="default"> = </span><span id="number">0</span><br><br><span id="comment"># dengan blok else</span><br><span id="keyword">do</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier">i</span><span id="default">++</span><br><span id="parenthesis-0">}</span><span id="default"> </span><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">i</span><span id="default"> &lt; </span><span id="number">5</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="keyword">else</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">&quot;Selesai tanpa break&quot;</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span></pre>
197
197
 
198
198
  ### Statemen _switch-case-default_
199
199
  Statemen ini adalah bentuk kontrol untuk memilih suatu aksi dari target nilai yang diberikan untuk dijalankan.
@@ -1,8 +1,9 @@
1
1
  from .core.buffer import PysFileBuffer
2
2
  from .core.constants import DEFAULT, OPTIMIZE
3
+ from .core.handlers import handle_execute
3
4
  from .core.highlight import HLFMT_HTML, HLFMT_ANSI, pys_highlight
4
5
  from .core.runner import pys_runner, pys_shell
5
- from .core.utils import normalize_path, build_symbol_table, handle_execute
6
+ from .core.utils import normalize_path, build_symbol_table
6
7
  from .core.version import __version__
7
8
 
8
9
  from argparse import ArgumentParser
@@ -23,7 +24,7 @@ parser.add_argument(
23
24
  )
24
25
 
25
26
  parser.add_argument(
26
- '-v', '--version',
27
+ '-v', '-V', '--version',
27
28
  action='version',
28
29
  version="PyScript {}".format(__version__),
29
30
  )
@@ -51,7 +52,7 @@ parser.add_argument(
51
52
  '-l', '--highlight',
52
53
  choices=('html', 'ansi'),
53
54
  default=None,
54
- help='generate highlight code from a file'
55
+ help='generate PyScript highlight code from a file'
55
56
  )
56
57
 
57
58
  args = parser.parse_args()
@@ -9,6 +9,7 @@ from . import (
9
9
  constants,
10
10
  context,
11
11
  exceptions,
12
+ handlers,
12
13
  highlight,
13
14
  interpreter,
14
15
  lexer,
@@ -34,6 +35,7 @@ __all__ = [
34
35
  'constants',
35
36
  'context',
36
37
  'exceptions',
38
+ 'handlers',
37
39
  'highlight',
38
40
  'interpreter',
39
41
  'lexer',
@@ -0,0 +1,60 @@
1
+ from .cache import hook
2
+ from .exceptions import PysException, PysShouldReturn
3
+ from .objects import PysChainFunction, PysFunction
4
+ from .utils import is_object_of
5
+
6
+ from contextlib import contextmanager
7
+ from types import MethodType
8
+
9
+ @contextmanager
10
+ def handle_exception(result, context, position):
11
+ try:
12
+ yield
13
+ except PysShouldReturn as e:
14
+ result.register(e.result)
15
+ except BaseException as e:
16
+ result.failure(PysException(e, context, position))
17
+
18
+ def handle_call(object, context, position, flags):
19
+ if isinstance(object, PysFunction):
20
+ object.__code__.call_context = context
21
+ object.__code__.position = position
22
+ object.__code__.flags = flags
23
+
24
+ elif isinstance(object, PysChainFunction):
25
+ object.__code__.context = context
26
+ object.__code__.position = position
27
+ object.__code__.flags = flags
28
+
29
+ elif isinstance(object, MethodType) and isinstance(object.__func__, PysFunction):
30
+ object.__func__.__code__.call_context = context
31
+ object.__func__.__code__.position = position
32
+ object.__func__.__code__.flags = flags
33
+
34
+ elif isinstance(object, type):
35
+
36
+ for call in ('__init__', '__new__'):
37
+ fn = getattr(object, call, None)
38
+
39
+ if isinstance(fn, PysFunction):
40
+ fn.__code__.call_context = context
41
+ fn.__code__.position = position
42
+ fn.__code__.flags = flags
43
+
44
+ def handle_execute(result):
45
+ try:
46
+
47
+ if result.error:
48
+ if is_object_of(result.error.exception, SystemExit):
49
+ return result.error.exception.code
50
+ if hook.exception is not None:
51
+ hook.exception(result.error)
52
+ return 1
53
+
54
+ elif len(result.result) == 1 and hook.display is not None:
55
+ hook.display(result.result[0])
56
+
57
+ except:
58
+ return 1
59
+
60
+ return 0
@@ -23,19 +23,19 @@ class _HighlightFormatter(Pys):
23
23
  return self.formater(*args, **kwargs)
24
24
 
25
25
  def formater(self, type, position, content):
26
- contented = self.content_block(type, position, content)
26
+ contented = self.content_block(position, content)
27
27
  result = ''
28
28
 
29
29
  if type == 'newline':
30
30
  if self._open:
31
- result += self.close_block(type, position, contented)
31
+ result += self.close_block(position, self._type)
32
32
  self._open = False
33
33
 
34
- result += self.newline_block(position, contented)
34
+ result += self.newline_block(position)
35
35
 
36
36
  elif type == 'end':
37
37
  if self._open:
38
- result += self.close_block(type, position, contented)
38
+ result += self.close_block(position, self._type)
39
39
  self._open = False
40
40
 
41
41
  elif type == self._type and self._open:
@@ -43,36 +43,37 @@ class _HighlightFormatter(Pys):
43
43
 
44
44
  else:
45
45
  if self._open:
46
- result += self.close_block(type, position, contented)
46
+ result += self.close_block(position, self._type)
47
+
48
+ result += self.open_block(position, type)
49
+ result += contented
47
50
 
48
- result += self.open_block(type, position, contented)
49
51
  self._open = True
50
52
 
51
53
  self._type = type
52
54
  return result
53
55
 
54
- def _ansi_open_block(type, position, content):
56
+ def _ansi_open_block(position, type):
55
57
  color = HIGHLIGHT.get(type, 'default')
56
58
 
57
- return '\x1b[38;2;{};{};{}m{}'.format(
59
+ return '\x1b[38;2;{};{};{}m'.format(
58
60
  int(color[1:3], 16),
59
61
  int(color[3:5], 16),
60
- int(color[5:7], 16),
61
- content
62
+ int(color[5:7], 16)
62
63
  )
63
64
 
64
65
  HLFMT_HTML = _HighlightFormatter(
65
- lambda type, position, content: sanitize_newline('<br>', html_escape(content)),
66
- lambda type, position, content: '<span style="color:{}">{}'.format(HIGHLIGHT.get(type, 'default'), content),
67
- lambda type, position, content: '</span>',
68
- lambda position, content: '<br>'
66
+ lambda position, content: sanitize_newline('<br>', html_escape(content)),
67
+ lambda position, type: '<span style="color:{}">'.format(HIGHLIGHT.get(type, 'default')),
68
+ lambda position, type: '</span>',
69
+ lambda position: '<br>'
69
70
  )
70
71
 
71
72
  HLFMT_ANSI = _HighlightFormatter(
72
- lambda type, position, content: sanitize_newline('\n', content),
73
+ lambda position, content: sanitize_newline('\n', content),
73
74
  _ansi_open_block,
74
- lambda type, position, content: '\x1b[0m',
75
- lambda position, content: '\n'
75
+ lambda position, type: '\x1b[0m',
76
+ lambda position: '\n'
76
77
  )
77
78
 
78
79
  def pys_highlight(source, format=None, max_parenthesis_level=3, flags=DEFAULT):
@@ -199,4 +200,6 @@ def pys_highlight(source, format=None, max_parenthesis_level=3, flags=DEFAULT):
199
200
  if token.type == TOKENS['EOF']:
200
201
  break
201
202
 
202
- return result
203
+ return result
204
+
205
+ del _ansi_open_block