re2c 2.0

Pada hari Isnin, 20 Julai, re2c, penjana penganalisis leksikal pantas, telah dikeluarkan.
Perubahan utama:

  • Menambah sokongan bahasa Go
    (didayakan sama ada oleh pilihan --lang go untuk re2c, atau sebagai program re2go yang berasingan).
    Dokumentasi untuk C dan Go dijana daripada teks yang sama, tetapi dengan berbeza
    contoh kod. Subsistem penjanaan kod dalam re2c telah direka bentuk semula sepenuhnya, yang mana
    seharusnya memudahkan untuk menyokong bahasa baharu pada masa hadapan.

  • Menambah sistem binaan alternatif untuk CMake (terima kasih ligfx!).
    Percubaan untuk menterjemah re2c kepada CMake telah dibuat untuk masa yang lama, tetapi sebelum ligfx tiada siapa
    ditawarkan penyelesaian yang lengkap.
    Sistem binaan Autotools lama terus disokong dan digunakan,
    dan pada masa hadapan tidak ada rancangan untuk meninggalkannya (sebahagiannya supaya tidak mencipta
    masalah untuk pembangun pengedaran, sebahagiannya kerana sistem binaan lama
    lebih stabil dan lebih ringkas daripada yang baru).
    Kedua-dua sistem diuji secara berterusan menggunakan Travis CI.

  • Menambah keupayaan untuk menetapkan kod antara muka dalam konfigurasi apabila menggunakan
    API generik. Sebelum ini, kebanyakan API perlu dinyatakan dalam borang
    fungsi atau fungsi makro. Kini mereka boleh dinyatakan dalam bentuk sewenang-wenangnya
    baris dengan parameter templat bernama seperti @@{name} atau hanya @@ (jika
    hanya terdapat satu parameter dan tidak ada kekaburan). Gaya API ditentukan oleh konfigurasi
    re2c:api:style (nilai fungsi menentukan gaya berfungsi, dan bentuk bebas menentukan gaya arbitrari).

  • Operasi pilihan -c, --start-conditions telah dipertingkatkan, membolehkan anda menggabungkan beberapa
    lexer yang saling berkaitan dalam satu blok re2c. Kini anda boleh menggunakan
    blok biasa bersama dengan blok bersyarat dan nyatakan beberapa blok bersyarat yang tidak berkaitan
    blok dalam satu fail.
    Operasi yang lebih baik bagi pilihan -r, --reuse (penggunaan semula kod dari satu blok
    dalam blok lain) dalam kombinasi dengan pilihan -c, --start-conditions dan -f, --storable-state
    (lexer stateful yang boleh diganggu pada bila-bila masa
    dan teruskan pelaksanaan kemudian).

  • Memperbaiki pepijat dalam algoritma akhir input yang baru ditambah
    (peraturan EOF), yang dalam kes yang jarang berlaku menyebabkan pemprosesan yang salah
    peraturan bertindih.

  • Proses bootstrap telah dipermudahkan. Sebelum ini, sistem binaan cuba mencari secara dinamik
    binaan re2c yang boleh digunakan untuk membina semula dirinya.
    Ini mengakibatkan kebergantungan yang salah (kerana graf kebergantungan ialah
    dinamik, yang kebanyakan sistem binaan tidak suka).
    Sekarang, untuk membina semula lexers, anda perlu secara eksplisit
    konfigurasikan sistem binaan dan tetapkan pembolehubah RE2C_FOR_BUILD.

Terima kasih kepada semua orang yang mengambil bahagian dalam penyediaan keluaran ini!

Sumber: linux.org.ru

Tambah komen