re2c 1.2

Dinten Jumaah, 2 Agustus, sékrési re2c, generator gratis analisa léksikal pikeun basa C sareng C ++, dileupaskeun. Re2c ditulis dina 1993 ku Peter Bamboulis salaku generator ékspérimén tina analisa léksikal anu gancang pisan, dibédakeun tina generator anu sanés ku kecepatan kode anu dibangkitkeun sareng antarbeungeut pangguna anu luar biasa fleksibel anu ngamungkinkeun analisa gampang sareng éfisién dipasang kana dasar kode anu tos aya. Ti saprak éta, proyék éta parantos dikembangkeun ku masarakat sareng teras janten platform pikeun ékspérimén sareng panalungtikan dina widang tata basa formal sareng mesin kaayaan terbatas.

Inovasi utama dina versi 1.2:

  • Ditambahkeun cara anyar (saderhana) pikeun mariksa tungtung data input
    (Basa Inggris "aturan EOF").
    Keur kitu, konfigurasi re2c:eof geus ditambahkeun,
    ngidinan Anjeun pikeun milih karakter terminal,
    sarta husus $ aturan nu seuneu lamun lexer
    hasil ngahontal tungtung data input.
    Dina sajarahna, re2c nyadiakeun pilihan sababaraha métode verifikasi pikeun
    tungtung inputs varying dina watesan, efisiensi tur kesederhanaan
    aplikasi. Metodeu anyar dirancang pikeun simplify kode nulis, bari
    bari tetep éféktif jeung loba lumaku. Cara baheula
    masih dianggo tur bisa jadi pikaresep dina sababaraha kasus.

  • Ditambahkeun kamampuan pikeun ngalebetkeun file éksternal nganggo diréktif
    /*! kaasup:re2c "file.re" */ mana file.re
    Ieu mangrupikeun nami file kalebet. Re2c milarian file dina diréktori file kalebet,
    kitu ogé dina daptar jalur dieusian ngagunakeun pilihan -I.
    File anu kalebet tiasa kalebet file anu sanés.
    Re2c nyayogikeun file "standar" dina diréktori kalebet /
    proyék - diperkirakeun yén definisi mangpaat bakal ngumpulkeun di dinya
    ungkapan biasa, hal kawas perpustakaan baku.
    Sajauh ieu, dina pamundut pagawe, hiji file jeung definisi kategori Unicode geus ditambahkeun.

  • Ditambahkeun kamampuan pikeun ngahasilkeun file header kalayan sawenang-wenang
    eusi ngagunakeun pilihan -t --type-header (atawa luyu
    konfigurasi) jeung diréktif anyar /*!header:re2c:on*/ jeung
    /*!header:re2c:off*/. Ieu bisa jadi mangpaat dina kasus dimana
    nalika re2c kedah ngahasilkeun definisi variabel, struktur sareng makro,
    dipaké dina unit tarjamah séjén.

  • Re2c ayeuna ngartos UTF8 literals sareng kelas karakter dina ekspresi biasa.
    Sacara standar, re2c parses éksprési kawas "∀x ∃y" salaku.
    runtuyan 1-bit karakter ASCII e2 88 80 78 20 e2 88 83 79
    (kode hex), sarta pamaké kudu kabur karakter Unicode sacara manual:
    "u2200x u2203y". Ieu pisan teu nyaman jeung teu kaduga keur loba
    pamaké (sakumaha dibuktikeun ku laporan bug konstan). Tah ayeuna
    re2c nyadiakeun pilihan --input-encoding ,
    nu ngidinan Anjeun pikeun ngarobah kabiasaan jeung parse "∀x ∃y" salaku
    2200 78 20 2203 79.

  • Re2c ayeuna ngamungkinkeun pamakean blok re2c biasa dina modeu -r --reuse.
    Ieu merenah lamun file input ngandung loba blok jeung ngan sababaraha di antarana
    perlu dipaké deui.

  • Ayeuna anjeun tiasa nyetél format peringatan sareng pesen kasalahan
    ngagunakeun pilihan --location-format anyar . Format GNU dipintonkeun
    salaku ngaran koropak: garis: kolom:, jeung format MSVC salaku ngaran koropak (garis, kolom).
    fitur ieu bisa jadi mangpaat pikeun pencinta IDE.
    Pilihan --verbose ogé geus ditambahkeun, nu prints pesen kameunangan pondok lamun sukses.

  • Mode "kasaluyuan" kalawan flex geus ningkat - sababaraha kasalahan parsing geus dibereskeun na
    precedence operator salah dina kasus nu jarang dipake.
    Dina sajarahna, pilihan -F --flex-support ngamungkinkeun anjeun nyerat kode
    dicampur dina gaya flex jeung gaya re2c, nu ngajadikeun parsing saeutik hésé.
    Modeu kasaluyuan fleksibel jarang dianggo dina kode anyar,
    tapi re2c terus ngarojong eta pikeun kasaluyuan mundur.

  • Operator pangurangan kelas karakter / ayeuna berlaku
    sateuacan ngalegaan encoding, anu ngamungkinkeun éta dianggo dina sajumlah kasus anu langkung ageung,
    lamun encoding panjang karakter variabel dipaké (contona UTF8).

  • Berkas kaluaran ayeuna didamel sacara atom: re2c nyiptakeun file samentawis heula
    sareng nyerat hasilna kana éta, teras ganti nami file samentawis kana kaluaran
    hiji operasi.

  • Dokuméntasi réngsé sareng ditulis deui; hususna, nu anyar ditambahkeun
    bab ngeunaan ngeusian panyangga
    и ngeunaan cara mariksa tungtung data input.
    Dokuméntasi anyar dikumpulkeun dina bentuk
    manual hiji-kaca komprehensif
    kalayan conto (sumber anu sami disayogikeun dina halaman manual sareng dina dokuméntasi online).
    Usaha anu goréng parantos dilakukeun pikeun ningkatkeun kabacaan situs dina telepon.

  • Tina sudut pandang pamekar, re2c parantos kéngingkeun subsistem anu langkung lengkep
    debugging Kode debugging ayeuna ditumpurkeun dina release ngawangun sarta
    tiasa diaktipkeun nganggo pilihan konfigurasi --enable-debug.

Pelepasan ieu nyandak waktos anu lami - ampir sataun sadayana.
Kalolobaan waktu, sakumaha salawasna, ieu spent dina ngamekarkeun kerangka teoritis jeung tulisan
tulisan "Efisiensi Ékstrak POSIX Submatch dina NFA".
Algoritma anu dijelaskeun dina tulisan dilaksanakeun di perpustakaan eksperimen libre2c
(ngawangun perpustakaan sareng tolok ukur ditumpurkeun sacara standar sareng diaktipkeun ku pilihan konfigurasi
--enable-libs). Perpustakaan henteu dianggap saingan anu aya
proyék kawas RE2, tapi salaku platform panalungtikan pikeun ngembangkeun anyar
algoritma (anu lajeng bisa dipaké dina re2c atanapi dina proyék séjén).
Éta ogé merenah tina sudut pandang tés, tolok ukur sareng nyiptakeun beungkeutan kana basa sanés.

Hatur nuhun ti pamekar re2c ka sadayana anu ngabantosan pelepasan ieu,
jeung ka masarakat umumna pikeun gagasan, laporan bug, patch, moral, jsb. ;]

sumber: linux.org.ru

Tambahkeun komentar