Sintaks leksikal yang aneh
- Bulan ini saya mempelajari 42 bahasa pemrograman untuk membuat penyorot sintaks baru untuk llamafile. Menyambut Halloween, saya ingin membagikan sintaks yang paling mengejutkan.
- Bahasa yang didukung adalah Ada, Assembly, BASIC, C, C#, C++, COBOL, CSS, D, FORTH, FORTRAN, Go, Haskell, HTML, Java, JavaScript, Julia, JSON, Kotlin, ld, LISP, Lua, m4, Make, Markdown, MATLAB, Pascal, Perl, PHP, Python, R, Ruby, Rust, Scala, Shell, SQL, Swift, Tcl, TeX, TXT, TypeScript, Zig.
Cara menulis penyorot sintaks
- Menerapkan penyorot sintaks tidaklah sulit. C++ dan GNU gperf adalah alat yang berguna.
- gperf dapat menghasilkan tabel hash sempurna untuk memaksimalkan performa.
- Penyorot sintaks dasar dapat diimplementasikan sebagai mesin keadaan hingga, dengan fokus pada string, komentar, dan kata kunci.
Demo
- Penyorot sintaks baru di llamafile memiliki keunggulan kuat dibandingkan ollama.
- Tersedia demo pembuatan kode dalam berbagai bahasa pemrograman menggunakan model Meta LLaMA 3.2 3B Instruct di Windows 10.
Contoh sintaks leksikal yang mengejutkan
- C: Bahasa C mengklaim sederhana, tetapi memiliki elemen rumit seperti trigraph.
- Haskell: Mengizinkan komentar bersarang.
- Tcl: Dapat menyertakan tanda kutip dalam identifier.
- JavaScript: Memiliki sintaks regular expression, dan menggunakan karakter UNICODE sebagai karakter ganti baris.
- Shell: Sintaks heredoc dapat digunakan dengan berbagai cara.
- String Interpolation: Kotlin, Scala, TypeScript mengizinkan penyisipan kode di dalam string.
- Swift: String dapat dibungkus dengan beberapa tanda #.
- C#: String dapat dibungkus menggunakan beberapa tanda kutip.
- FORTH: Men-tokenisasi semuanya berdasarkan batas spasi.
- FORTRAN dan COBOL: llamafile mendukung penyorotan sintaks untuk bahasa-bahasa ini.
- Zig: String multi-baris dimulai dengan dua backslash.
- Lua: String multi-baris menggunakan tanda kurung siku dan tanda sama dengan.
- Assembly: Memiliki berbagai dialek sehingga penyorotan sintaks menjadi sulit.
- Ada: Menggunakan tanda kutip tunggal untuk berbagai tujuan.
- BASIC: Tidak memerlukan tanda kutip penutup di akhir string.
- Perl: Sintaks regular expression-nya unik.
- Ruby: Sintaksnya rumit dan sulit dipahami.
Kompleksitas bahasa yang didukung
- FORTH adalah bahasa yang paling sederhana dan Ruby yang paling kompleks.
- Kompleksitas dinilai berdasarkan jumlah baris kode untuk penyorotan sintaks tiap bahasa.
Ringkasan GN⁺
- Artikel ini mengeksplorasi sintaks unik dari berbagai bahasa pemrograman dan memberikan wawasan yang dibutuhkan untuk mengimplementasikan penyorot sintaks.
- Penyorot sintaks llamafile mendukung berbagai bahasa, dan bisa sangat berguna khususnya untuk pemeliharaan bahasa-bahasa lama.
- Ini membantu memahami kompleksitas sintaks bahasa pemrograman, dan akan bermanfaat bagi orang yang tertarik pada pengembangan penyorot sintaks.
- Proyek dengan fungsi serupa antara lain Pygments dan Emacs.
1 komentar
Komentar Hacker News
||