lumangsung ngabebaskeun deui2c, generator analisa leksikal gratis pikeun basa C sareng C++. Hayu urang émut yén re2c ditulis dina 1993 ku Peter Bambulis salaku generator ékspérimén tina analisa léksikal anu gancang pisan, bénten ti generator sanés dina laju kode anu dibangkitkeun sareng antarbeungeut pangguna anu luar biasa fléksibel anu ngamungkinkeun analisa gampang sareng éfisién diintegrasikeun kana anu aya. dasar kode. 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.
Persiapan pikeun sékrési nyandak ampir sataun. Kalolobaan waktu, sakumaha salawasna, ieu spent dina ngamekarkeun kerangka teoritis jeung tulisan
artikel"Éfisién ékstraksi POSIX Submatch on NFA".
Algoritma anu dijelaskeun dina tulisan dilaksanakeun di perpustakaan eksperimen libre2c
(ngawangun perpustakaan sareng tés kinerja ditumpurkeun sacara standar sareng diaktipkeun ku pilihan konfigurasi "--enable-libs". Perpustakaan henteu dimaksudkeun salaku saingan pikeun proyék-proyék anu aya sapertos RE2, tapi salaku platform panalungtikan pikeun pamekaran anu énggal.
algoritma (anu lajeng bisa dipaké dina re2c atanapi dina proyék séjén). Éta ogé merenah tina sudut pandang nguji, ngukur kinerja sarta nyieun bindings kana basa séjén.
Inovasi utama dina versi re2c 1.2:
Ditambahkeun metode saderhana anyar pikeun mariksa tungtung data input ("aturan EOF"). Pikeun ieu, konfigurasi "re2c: eof" parantos ditambahkeun,
ngidinan Anjeun pikeun milih karakter terminal,
jeung aturan husus "$", nu dipicu 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
"/*!include:re2c "file.re" */", dimana "file.re" nyaéta ngaran file anu bakal diasupkeun. 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 nyadiakeun file "standar" dina diréktori "kaasup /".
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 {ascii | utf8}",
nu ngidinan Anjeun pikeun ngarobah kabiasaan jeung parse "∀x ∃y" salaku
"2200 78 20 2203 79."
Re2c ayeuna ngamungkinkeun blok re2c biasa dianggo 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 anyar "--location-format {gnu | msvc}". Format GNU dipintonkeun
salaku "ngaran koropak: garis: kolom:", jeung format MSVC salaku "ngaran koropak (garis, kolom)".
fitur ieu bisa jadi mangpaat pikeun pencinta IDE.
A "--verbose" pilihan ogé geus ditambahkeun, nu mintonkeun pesen meunangna pondok lamun sukses.
Mode "kasaluyuan" sareng flex parantos ningkat - sababaraha kasalahan parsing parantos dibenerkeun sareng
precedence operator salah dina kasus nu jarang dipake.
Dina sajarahna, pilihan "-F --flex-suppor" 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.
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".