waye tu silẹ re2c, monomono atunnkanka lexical ọfẹ fun awọn ede C ati C ++. Ranti pe a ti kọ re2c ni ọdun 1993 nipasẹ Peter Bambulis gẹgẹbi olupilẹṣẹ esiperimenta ti awọn olutupalẹ lexical ti o yara pupọ, ti o yatọ si awọn olupilẹṣẹ miiran ni iyara ti koodu ti ipilẹṣẹ ati wiwo olumulo ti o rọ ni aiṣedeede ti o fun laaye awọn atunnkanka lati ni irọrun ati imudara daradara sinu koodu to wa tẹlẹ. ipilẹ. Lati igbanna, iṣẹ akanṣe naa ti ni idagbasoke nipasẹ agbegbe ati tẹsiwaju lati jẹ pẹpẹ fun awọn idanwo ati iwadii ni aaye ti awọn girama ti iṣe deede ati awọn ẹrọ ipinlẹ ipari.
Igbaradi fun itusilẹ gba fere ọdun kan. Pupọ julọ akoko naa, bi nigbagbogbo, ni a lo lori idagbasoke ilana ilana ati kikọ
awọn nkan "Isediwon Submatch POSIX daradara lori NFA".
Awọn algoridimu ti a ṣapejuwe ninu nkan naa jẹ imuse ni ile-ikawe esiperimenta libre2c
(kikọ ile-ikawe ati awọn idanwo iṣẹ jẹ alaabo nipasẹ aiyipada ati ṣiṣẹ nipasẹ aṣayan atunto “-enable-libs”). Ile-ikawe naa ko ṣe ipinnu bi oludije si awọn iṣẹ akanṣe ti o wa tẹlẹ bii RE2, ṣugbọn bi pẹpẹ iwadii fun idagbasoke awọn tuntun
awọn algoridimu (eyiti o le ṣee lo ni re2c tabi ni awọn iṣẹ akanṣe miiran). O tun rọrun lati oju wiwo ti idanwo, wiwọn iṣẹ ṣiṣe ati ṣiṣẹda awọn asopọ si awọn ede miiran.
Awọn imotuntun akọkọ ni ẹya re2c 1.2:
Ṣe afikun ọna irọrun tuntun fun ṣiṣe ayẹwo opin data titẹ sii (“ofin EOF”). Fun eyi, iṣeto “re2c: eof” ti ṣafikun,
gba ọ laaye lati yan ohun kikọ ebute,
ati ki o kan pataki ofin "$", eyi ti o ti lo jeki ti o ba ti lexer
ni aṣeyọri de opin data titẹ sii.
Itan-akọọlẹ, re2c n pese yiyan ti awọn ọna ijerisi pupọ fun
opin awọn igbewọle ti o yatọ ni aropin, ṣiṣe ati ayedero
awọn ohun elo. Awọn titun ọna ti a ṣe lati simplify kikọ koodu, nigba ti
nigba ti o ku munadoko ati ki o ni opolopo wulo. Awọn ọna atijọ
ṣi ṣiṣẹ ati pe o le jẹ ayanfẹ ni awọn igba miiran.
Ṣe afikun agbara lati ṣafikun awọn faili ita ni lilo itọsọna kan
"/*!include:re2c "file.re" */", nibiti "file.re" ti jẹ orukọ faili ti o yẹ ki o wa. Re2c n wa awọn faili ninu pẹlu itọsọna faili,
bakannaa ninu atokọ ti awọn ọna ti a sọ nipa lilo aṣayan “-I”.
Awọn faili to wa le pẹlu awọn faili miiran.
Re2c n pese awọn faili “boṣewa” ninu iwe ilana “pẹlu/”.
ise agbese - o ti wa ni o ti ṣe yẹ wipe wulo itumo yoo kojọpọ nibẹ
deede expressions, nkankan bi awọn boṣewa ìkàwé.
Nitorinaa, ni ibeere ti awọn oṣiṣẹ, faili kan pẹlu awọn asọye ti awọn ẹka Unicode ti ṣafikun.
Ṣe afikun agbara lati ṣe ina awọn faili akọsori pẹlu lainidii
akoonu nipa lilo awọn aṣayan "-t --type-header" (tabi yẹ
awọn atunto) ati awọn itọsọna titun "/*! akọsori: re2c: lori * /" ati
"/*! akọsori:re2c:pa*/". Eyi le wulo ni awọn ọran nibiti
nigbati re2c nilo lati ṣe ipilẹṣẹ awọn asọye ti awọn oniyipada, awọn ẹya ati awọn macros,
ti a lo ninu awọn ẹya itumọ miiran.
Re2c ni oye awọn ọrọ gangan UTF8 ati awọn kilasi ihuwasi ni awọn ikosile deede.
Nipa aiyipada, re2c tumọ awọn ọrọ bi "∀x∃y" bi
lẹsẹsẹ awọn ohun kikọ ASCII 1-bit "e2 88 80 78 20 e2 88 83 79"
(awọn koodu hex), ati awọn olumulo ni lati sa fun awọn ohun kikọ Unicode pẹlu ọwọ:
"\\ u2200x \\ u2203y". Eyi jẹ airọrun pupọ ati airotẹlẹ fun ọpọlọpọ
awọn olumulo (bi ẹri nipasẹ awọn ijabọ kokoro igbagbogbo). Nitorina bayi
re2c n pese aṣayan "--input-encoding {ascii | utf8}",
eyiti o fun ọ laaye lati yi ihuwasi pada ki o sọ “∀x ∃y” bi
"2200 78 20 2203 79."
Re2c ni bayi ngbanilaaye awọn bulọọki re2c deede lati ṣee lo ni ipo “-r --reuse”.
Eyi rọrun ti faili titẹ sii ni ọpọlọpọ awọn bulọọki ati diẹ ninu wọn nikan
nilo lati tun lo.
Bayi o le ṣeto ọna kika ti awọn ikilo ati awọn ifiranṣẹ aṣiṣe
lilo aṣayan titun "--location-format {gnu | msvc}". GNU ọna kika ti han
bi "orukọ faili: laini: iwe:", ati ọna kika MSVC gẹgẹbi "orukọ faili (ila, ọwọn)".
Ẹya yii le wulo fun awọn ololufẹ IDE.
Aṣayan “--verbose” tun ti ṣafikun, eyiti o ṣafihan ifiranṣẹ iṣẹgun kukuru ti o ba ṣaṣeyọri.
Ipo “ibaramu” pẹlu irọrun ti ni ilọsiwaju - diẹ ninu awọn aṣiṣe itupalẹ ti wa titi ati
iṣaaju oniṣẹ ti ko tọ ni awọn iṣẹlẹ toje.
Ni itan-akọọlẹ, aṣayan "-F --flex-support" gba ọ laaye lati kọ koodu
adalu ni Flex ara ati re2c ara, eyi ti o mu kikopa kekere kan soro.
Ipo ibaramu Flex jẹ ṣọwọn lo ninu koodu titun,
ṣugbọn re2c tẹsiwaju lati ṣe atilẹyin fun ibaramu sẹhin.
Onišẹ iyokuro kilasi ohun kikọ "/" wa ni bayi
ṣaaju fifi koodu sii, eyiti o fun laaye laaye lati lo ni nọmba nla ti awọn ọran,
ti o ba ti lo fifi koodu ipari gigun ohun kikọ (fun apẹẹrẹ UTF8).
Faili ti o wu jade ni a ṣẹda ni atomiki: re2c ṣẹda faili igba diẹ ni akọkọ
ati kọ abajade sinu rẹ, ati lẹhinna tunrukọ faili igba diẹ si iṣẹjade
ọkan isẹ.
Lati oju wiwo ti awọn olupilẹṣẹ, re2c ti ni eto ipilẹ-pipe diẹ sii
n ṣatunṣe aṣiṣe Koodu yokokoro ti wa ni alaabo bayi ni awọn kikọ idasilẹ ati
le mu ṣiṣẹ nipa lilo aṣayan atunto "-enable-debug".