re2c 1.2

Pada hari Jumaat, 2 Ogos, keluaran re2c, penjana percuma penganalisis leksikal untuk bahasa C dan C++, telah dikeluarkan. Re2c telah ditulis pada tahun 1993 oleh Peter Bamboulis sebagai penjana eksperimen penganalisis leksikal yang sangat pantas, dibezakan daripada penjana lain dengan kelajuan kod yang dijana dan antara muka pengguna yang luar biasa fleksibel yang membolehkan penganalisis dibenamkan dengan mudah dan cekap ke dalam pangkalan kod sedia ada. Sejak itu, projek itu telah dibangunkan oleh masyarakat dan terus menjadi platform untuk eksperimen dan penyelidikan dalam bidang tatabahasa formal dan mesin keadaan terhingga.

Inovasi utama dalam versi 1.2:

  • Menambah cara baharu (dipermudahkan) untuk menyemak penghujung data input
    (Bahasa Inggeris β€œEOF rule”).
    Untuk ini, konfigurasi re2c:eof telah ditambahkan,
    membolehkan anda memilih aksara terminal,
    dan peraturan $ khas yang menyala jika lexer
    berjaya mencapai penghujung data input.
    Dari segi sejarah, re2c menyediakan pilihan beberapa kaedah pengesahan untuk
    akhir input yang berbeza-beza dalam had, kecekapan dan kesederhanaan
    aplikasi. Kaedah baharu ini direka untuk memudahkan penulisan kod, manakala
    sambil kekal berkesan dan boleh digunakan secara meluas. Cara lama
    masih berfungsi dan mungkin diutamakan dalam beberapa kes.

  • Menambah keupayaan untuk memasukkan fail luaran menggunakan arahan
    /*!include:re2c "file.re" */ di mana file.re
    ini adalah nama fail sertakan. Re2c mencari fail dalam direktori fail termasuk,
    serta dalam senarai laluan yang ditentukan menggunakan pilihan -I.
    Fail yang disertakan mungkin termasuk fail lain.
    Re2c menyediakan fail "standard" dalam direktori include/
    projek - adalah dijangka bahawa definisi berguna akan terkumpul di sana
    ungkapan biasa, sesuatu seperti perpustakaan standard.
    Setakat ini, atas permintaan pekerja, satu fail dengan definisi kategori Unicode telah ditambah.

  • Menambah keupayaan untuk menjana fail pengepala dengan sewenang-wenangnya
    kandungan menggunakan pilihan -t --type-header (atau sesuai
    konfigurasi) dan arahan baharu /*!header:re2c:on*/ dan
    /*!header:re2c:off*/. Ini mungkin berguna dalam kes di mana
    apabila re2c perlu menjana definisi pembolehubah, struktur dan makro,
    digunakan dalam unit terjemahan lain.

  • Re2c kini memahami huruf UTF8 dan kelas aksara dalam ungkapan biasa.
    Secara lalai, re2c menghuraikan ungkapan seperti "βˆ€x βˆƒy" sebagai.
    jujukan aksara ASCII 1-bit e2 88 80 78 20 e2 88 83 79
    (kod hex), dan pengguna perlu melepaskan aksara Unicode secara manual:
    "u2200x u2203y". Ini sangat menyusahkan dan tidak dijangka bagi ramai orang
    pengguna (seperti yang dibuktikan oleh laporan pepijat yang berterusan). Jadi sekarang
    re2c menyediakan pilihan --input-encoding ,
    yang membolehkan anda menukar tingkah laku dan menghuraikan "βˆ€x βˆƒy" sebagai
    2200 78 20 2203 79.

  • Re2c kini membenarkan penggunaan blok re2c biasa dalam mod -r --reuse.
    Ini mudah jika fail input mengandungi banyak blok dan hanya sebahagian daripadanya
    perlu diguna semula.

  • Kini anda boleh menetapkan format amaran dan mesej ralat
    menggunakan pilihan --location-format baharu . Format GNU dipaparkan
    sebagai nama fail: baris: lajur:, dan format MSVC sebagai nama fail (baris, lajur).
    Ciri ini mungkin berguna untuk pencinta IDE.
    Pilihan --verbose juga telah ditambahkan, yang mencetak mesej kemenangan pendek jika berjaya.

  • Mod "keserasian" dengan flex telah dipertingkatkan - beberapa ralat penghuraian telah diperbaiki dan
    keutamaan pengendali yang salah dalam kes yang jarang berlaku.
    Dari segi sejarah, pilihan -F --flex-support membenarkan anda menulis kod
    bercampur dalam gaya flex dan gaya re2c, yang menjadikan penghuraian agak sukar.
    Mod keserasian fleksibel jarang digunakan dalam kod baharu,
    tetapi re2c terus menyokongnya untuk keserasian ke belakang.

  • Operator penolakan kelas aksara / kini digunakan
    sebelum mengembangkan pengekodan, yang membolehkan ia digunakan dalam bilangan kes yang lebih besar,
    jika pengekodan panjang aksara berubah digunakan (contohnya UTF8).

  • Fail output kini dicipta secara atom: re2c mencipta fail sementara dahulu
    dan menulis hasilnya ke dalamnya, dan kemudian menamakan semula fail sementara kepada output
    satu operasi.

  • Dokumentasi telah disiapkan dan ditulis semula; khususnya, yang baharu telah ditambah
    bab tentang mengisi penimbal
    ΠΈ tentang cara untuk menyemak penghujung data input.
    Dokumentasi baharu dikumpulkan dalam borang
    manual satu halaman yang komprehensif
    dengan contoh (sumber yang sama dipaparkan dalam halaman manual dan dalam dokumentasi dalam talian).
    Percubaan buruk telah dibuat untuk meningkatkan kebolehbacaan tapak pada telefon.

  • Dari sudut pandangan pembangun, re2c telah memperoleh subsistem yang lebih lengkap
    penyahpepijatan Kod penyahpepijatan kini dilumpuhkan dalam binaan keluaran dan
    boleh didayakan menggunakan pilihan konfigurasi --enable-debug.

Keluaran ini mengambil masa yang lama - hampir setahun penuh.
Kebanyakan masa, seperti biasa, dibelanjakan untuk membangunkan rangka kerja dan penulisan teori
Perkara "Ekstrak Padanan Kecil POSIX yang Cekap pada NFA".
Algoritma yang diterangkan dalam artikel dilaksanakan dalam perpustakaan eksperimen libre2c
(membina perpustakaan dan penanda aras dilumpuhkan secara lalai dan didayakan oleh pilihan konfigurasi
--dayakan-libs). Perpustakaan tidak dianggap sebagai pesaing kepada yang sedia ada
projek seperti RE2, tetapi sebagai platform penyelidikan untuk pembangunan yang baru
algoritma (yang kemudiannya boleh digunakan dalam re2c atau dalam projek lain).
Ia juga mudah dari sudut pandangan ujian, penanda aras dan mencipta pengikatan kepada bahasa lain.

Terima kasih daripada pembangun re2c kepada semua orang yang membantu keluaran ini berlaku,
dan kepada komuniti secara umum untuk idea, laporan pepijat, tampalan, semangat, dsb. ;]

Sumber: linux.org.ru

Tambah komen