Rilis re2c lexer generator 1.2

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.

  • Dokumentasi telah diselesaikan dan ditulis ulang; khususnya, yang baru ditambahkan
    bab tentang http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и tentang cara memeriksa akhir data masukan.
    Dokumentasi baru dikumpulkan dalam formulir
    panduan satu halaman yang komprehensif
    dengan contoh (sumber yang sama diberikan di halaman manual dan dokumentasi online).
    Upaya buruk telah dilakukan untuk meningkatkan keterbacaan situs di ponsel.

  • 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".

Sumber: opennet.ru

Tambah komentar