re2c 1.2

Pada hari Jumat, 2 Agustus, rilis re2c, generator penganalisis leksikal gratis untuk bahasa C dan C++, telah dirilis. Re2c ditulis pada tahun 1993 oleh Peter Bamboulis sebagai generator eksperimental penganalisis leksikal yang sangat cepat, dibedakan dari generator lain berdasarkan kecepatan kode yang dihasilkan dan antarmuka pengguna yang luar biasa fleksibel yang memungkinkan penganalisis tertanam dengan mudah dan efisien ke dalam basis kode yang ada. Sejak saat itu, proyek ini dikembangkan oleh komunitas dan terus menjadi platform eksperimen dan penelitian di bidang tata bahasa formal dan mesin keadaan terbatas.

Inovasi utama di versi 1.2:

  • Menambahkan cara baru (yang disederhanakan) untuk memeriksa akhir data masukan
    (Bahasa Inggris β€œaturan EOF”).
    Untuk ini, konfigurasi re2c:eof telah ditambahkan,
    memungkinkan Anda memilih karakter terminal,
    dan aturan $ khusus yang diaktifkan 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" */ di mana file.re
    ini adalah nama file yang disertakan. 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
    /*!header: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 ,
    yang memungkinkan Anda mengubah perilaku dan mengurai "βˆ€x βˆƒy" sebagai
    2200 78 20 2203 79.

  • Re2c sekarang mengizinkan penggunaan blok re2c biasa 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 --location-format yang baru . 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 mencetak 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-support 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
    Π°Π²Ρ‹ tentang mengisi buffer
    ΠΈ tentang cara memeriksa akhir data masukan.
    Dokumentasi baru dikumpulkan dalam formulir
    manual 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.

Rilis ini memakan waktu lama - 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
(membangun perpustakaan dan tolok ukur dinonaktifkan secara default dan diaktifkan oleh opsi konfigurasi
--aktifkan-libs). Perpustakaan tidak dianggap sebagai pesaing perpustakaan yang sudah ada
proyek seperti RE2, tetapi sebagai platform penelitian untuk pengembangan proyek baru
algoritma (yang kemudian dapat digunakan dalam re2c atau proyek lain).
Ini juga nyaman dalam hal pengujian, tolok ukur, dan pembuatan tautan ke bahasa lain.

Terima kasih dari pengembang re2c kepada semua orang yang membantu rilis ini terjadi,
dan kepada komunitas secara umum untuk ide, laporan bug, patch, semangat, dll. ;]

Sumber: linux.org.ru

Tambah komentar