ambil tempat melepaskan re2c, generator penganalisis leksikal gratis untuk bahasa C dan C++. Ingatlah bahwa re2c ditulis pada tahun 1993 oleh Peter Bambulis sebagai generator eksperimental penganalisis leksikal yang sangat cepat, berbeda dari generator lain dalam kecepatan kode yang dihasilkan dan antarmuka pengguna yang luar biasa fleksibel yang memungkinkan penganalisis diintegrasikan dengan mudah dan efisien ke dalam kode yang ada basis. Sejak saat itu, proyek ini dikembangkan oleh komunitas dan terus menjadi platform eksperimen dan penelitian di bidang tata bahasa formal dan mesin keadaan terbatas.
Persiapan rilisnya memakan waktu hampir satu tahun penuh. Sebagian besar waktunya, seperti biasa, dihabiskan untuk mengembangkan kerangka teori dan menulis
artikel "Ekstraksi Submatch POSIX yang Efisien pada NFA".
Algoritme yang dijelaskan dalam artikel diimplementasikan di perpustakaan eksperimental libre2c
(membuat perpustakaan dan pengujian kinerja dinonaktifkan secara default dan diaktifkan oleh opsi konfigurasi “—enable-libs”). Perpustakaan ini tidak dimaksudkan sebagai pesaing proyek-proyek yang sudah ada seperti RE2, namun sebagai platform penelitian untuk pengembangan proyek-proyek baru
algoritma (yang kemudian dapat digunakan dalam re2c atau proyek lain). Ini juga berguna dalam hal pengujian, pengukuran kinerja, dan pengikatan ke bahasa lain.
Inovasi utama dalam versi re2c 1.2:
Menambahkan metode baru yang disederhanakan untuk memeriksa akhir data masukan (“aturan EOF”). Untuk ini, konfigurasi “re2c:eof” telah ditambahkan,
memungkinkan Anda memilih karakter terminal,
dan aturan khusus “$”, yang dipicu jika lexer
berhasil mencapai akhir data input.
Secara historis, re2c menyediakan beberapa pilihan metode verifikasi untuk
akhir input yang bervariasi dalam batasan, efisiensi dan kesederhanaan
aplikasi. Metode baru ini dirancang untuk menyederhanakan penulisan kode
namun tetap efektif dan dapat diterapkan secara luas. Cara lama
masih berfungsi dan mungkin lebih disukai dalam beberapa kasus.
Menambahkan kemampuan untuk memasukkan file eksternal menggunakan arahan
"/*!include:re2c "file.re" */", dimana "file.re" adalah nama file yang akan dimasukkan. Re2c mencari file di direktori file termasuk,
serta dalam daftar jalur yang ditentukan menggunakan opsi “-I”.
File yang disertakan mungkin menyertakan file lain.
Re2c menyediakan file "standar" di direktori "include/".
proyek - definisi yang berguna diharapkan akan terakumulasi di sana
ekspresi reguler, sesuatu seperti perpustakaan standar.
Sejauh ini, atas permintaan pekerja, satu file dengan definisi kategori Unicode telah ditambahkan.
Menambahkan kemampuan untuk menghasilkan file header dengan sewenang-wenang
konten menggunakan opsi "-t --type-header" (atau yang sesuai
konfigurasi) dan arahan baru "/*!header:re2c:on*/" dan
"/*!tajuk:re2c:mati*/". Ini mungkin berguna jika
ketika re2c perlu menghasilkan definisi variabel, struktur dan makro,
digunakan dalam unit terjemahan lainnya.
Re2c sekarang memahami literal UTF8 dan kelas karakter dalam ekspresi reguler.
Secara default, re2c mem-parsing ekspresi seperti "∀x ∃y" sebagai
urutan karakter ASCII 1-bit “e2 88 80 78 20 e2 88 83 79”
(kode hex), dan pengguna harus keluar dari karakter Unicode secara manual:
“\\u2200x \\u2203y.” Hal ini sangat merepotkan dan tidak terduga bagi banyak orang
pengguna (sebagaimana dibuktikan dengan laporan bug yang konstan). Jadi sekarang
re2c menyediakan opsi "--input-encoding {ascii | utf8}",
yang memungkinkan Anda mengubah perilaku dan mengurai “∀x ∃y” sebagai
“2200 78 20 2203 79.”
Re2c sekarang mengizinkan blok re2c biasa untuk digunakan dalam mode "-r --reuse".
Ini berguna jika file input berisi banyak blok dan hanya beberapa blok saja
perlu digunakan kembali.
Sekarang Anda dapat mengatur format peringatan dan pesan kesalahan
menggunakan opsi baru "--location-format {gnu | msvc}". Format GNU ditampilkan
sebagai "nama file: baris: kolom:", dan format MSVC sebagai "nama file (baris, kolom)".
Fitur ini mungkin berguna bagi pecinta IDE.
Opsi "--verbose" juga telah ditambahkan, yang menampilkan pesan kemenangan singkat jika berhasil.
Mode "kompatibilitas" dengan flex telah ditingkatkan - beberapa kesalahan penguraian telah diperbaiki dan
prioritas operator yang salah dalam kasus yang jarang terjadi.
Secara historis, opsi "-F --flex-suppor" memungkinkan Anda menulis kode
dicampur dalam gaya fleksibel dan gaya re2c, yang membuat penguraian sedikit sulit.
Mode kompatibilitas fleksibel jarang digunakan dalam kode baru,
tapi re2c terus mendukungnya untuk kompatibilitas ke belakang.
Operator pengurangan kelas karakter "/" sekarang berlaku
sebelum memperluas pengkodean, yang memungkinkannya digunakan dalam lebih banyak kasus,
jika pengkodean panjang karakter variabel digunakan (misalnya UTF8).
File keluaran sekarang dibuat secara atom: re2c membuat file sementara terlebih dahulu
dan menulis hasilnya ke dalamnya, lalu mengganti nama file sementara menjadi output
satu operasi.
Dari sudut pandang pengembang, re2c telah memperoleh subsistem yang lebih lengkap
melakukan debug Kode debug sekarang dinonaktifkan di versi rilis dan
dapat diaktifkan menggunakan opsi konfigurasi "--enable-debug".