pran plas lage re2c, yon dèlko analizeur leksikal gratis pou lang C ak C++. Ann sonje ke re2c te ekri an 1993 pa Peter Bambulis kòm yon jeneratè eksperimantal nan analizeur leksik trè vit, diferan de lòt jeneratè nan vitès la nan kòd la pwodwi ak yon koòdone itilizatè ekstraòdinè fleksib ki pèmèt analizè yo dwe fasil ak efikasman entegre nan yon ki deja egziste. baz kòd. Depi lè sa a, pwojè a te devlope pa kominote a epi li kontinye ap yon platfòm pou eksperyans ak rechèch nan jaden an nan gramè fòmèl ak machin eta fini.
Preparasyon pou lage a te pran prèske yon ane antye. Pifò nan tan an, kòm toujou, te pase sou devlope yon fondasyon teyorik ak ekri
atik "Ekstraksyon efikas POSIX Submatch sou NFA".
Algoritm yo dekri nan atik la aplike nan bibliyotèk eksperimantal libre2c
(Konstriksyon bibliyotèk la ak tès pèfòmans yo enfim pa default epi li pèmèt opsyon konfigirasyon "--enable-libs" la). Bibliyotèk la pa fèt kòm yon konkiran nan pwojè ki deja egziste tankou RE2, men kòm yon platfòm rechèch pou devlopman nouvo.
algoritm (ki ka Lè sa a, itilize nan re2c oswa nan lòt pwojè). Li se tou pratik nan pwen de vi nan tès, mezire pèfòmans ak kreye obligatwa nan lòt lang.
Inovasyon prensipal yo nan vèsyon re2c 1.2:
Te ajoute yon nouvo metòd senplifye pou tcheke fen done antre ("règ EOF"). Pou sa, yo te ajoute "re2c:eof" konfigirasyon an,
pèmèt ou chwazi karaktè tèminal la,
ak yon règ espesyal "$", ki se deklanche si lexer la
avèk siksè rive nan fen done yo antre.
Istorikman, re2c bay yon chwa nan plizyè metòd verifikasyon pou
fen nan entrain varye nan limit, efikasite ak senplisite
aplikasyon yo. Nouvo metòd la fèt pou senplifye ekri kòd, pandan
pandan y ap rete efikas ak lajman aplikab. Ansyen fason
toujou travay epi yo ka pi pito nan kèk ka.
Te ajoute kapasite pou mete fichye ekstèn lè l sèvi avèk yon direktiv
"/*!include:re2c "file.re" */", kote "file.re" se non fichye a pou mete. Re2c chèche fichye ki nan anyè dosye ki gen ladan yo,
osi byen ke nan lis la nan chemen espesifye lè l sèvi avèk "-I" opsyon an.
Fichye ki enkli yo ka genyen lòt dosye.
Re2c bay fichye "estanda" nan anyè "include/".
pwojè - li espere ke definisyon itil pral akimile la
ekspresyon regilye, yon bagay tankou bibliyotèk estanda a.
Jiskaprezan, sou demann travayè yo, yo te ajoute yon dosye ki gen definisyon kategori Unicode.
Te ajoute kapasite nan jenere dosye header ak abitrè
kontni lè l sèvi avèk opsyon "-t --type-header" (oswa apwopriye
konfigirasyon) ak nouvo direktiv "/*!header:re2c:on*/" ak
"/*! header:re2c:off*/". Sa a ka itil nan ka kote
lè re2c bezwen jenere definisyon varyab, estrikti ak makro,
itilize nan lòt inite tradiksyon.
Re2c kounye a konprann literal UTF8 ak klas karaktè nan ekspresyon regilye.
Pa default, re2c analize ekspresyon tankou "∀x ∃y" kòm
sekans karaktè ASCII 1-bit "e2 88 80 78 20 e2 88 83 79"
(kod hex), ak itilizatè yo oblije chape karaktè Unicode manyèlman:
"\\u2200x\\u2203y". Sa a se trè konvenyan ak inatandi pou anpil moun
itilizatè yo (jan sa evidan pa rapò ensèk konstan). Se konsa, kounye a
re2c bay opsyon "--input-encoding {ascii | utf8}",
ki pèmèt ou chanje konpòtman an epi analize "∀x ∃y" kòm
"2200 78 20 2203 79."
Re2c kounye a pèmèt blòk re2c regilye yo dwe itilize nan mòd "-r --reuse".
Sa a se pratik si dosye a opinyon gen anpil blòk ak sèlman kèk nan yo
bezwen réutilisation.
Koulye a, ou ka mete fòma avètisman ak mesaj erè
itilize nouvo opsyon "--location-format {gnu | msvc}". Fòma GNU parèt
kòm "filename:line:column:", ak fòma MSVC kòm "filename(liy,colonn)".
Karakteristik sa a ka itil pou rayisab IDE.
Yon opsyon "--verbose" te ajoute tou, ki montre yon mesaj viktwa kout si yo reyisi.
Mòd "konpatibilite" ak flex te amelyore - kèk erè analiz yo te ranje ak
move priyorite operatè nan ka ki ra.
Istorikman, opsyon "-F --flex-suppor" te pèmèt ou ekri kòd
melanje nan style flex ak style re2c, ki fè analiz yon ti kras difisil.
Mòd konpatibilite Flex raman itilize nan nouvo kòd,
men re2c kontinye sipòte li pou konpatibilite bak.
Operatè soustraksyon klas karaktè "/" kounye a aplike
anvan agrandi kodaj la, ki pèmèt li yo dwe itilize nan yon pi gwo kantite ka,
si yo itilize yon kodaj longè karaktè varyab (pa egzanp UTF8).
Se fichye pwodiksyon an kounye a kreye atomik: re2c kreye yon dosye tanporè an premye
epi ekri rezilta a nan li, ak Lè sa a, chanje non dosye tanporè a nan pwodiksyon an
yon sèl operasyon.
Soti nan pwen de vi devlopè yo, re2c te akeri yon subsystem pi konplè
debogaj Kòd debogaj kounye a enfim nan lage bati ak
ka aktive lè l sèvi avèk opsyon nan konfigirasyon "--enable-debug".