Ka Labohlano la la 2 Phato, ho ile ha lokolloa re2c, jenereithara ea mahala ea li-lexical analyzers bakeng sa lipuo tsa C le C ++. Re2c e ngotsoe ka 1993 ke Peter Bamboulis e le jenereithara ea liteko tsa li-lexical analyzers tse potlakileng haholo, tse khetholloang ho lijenereithara tse ling ka lebelo la khoutu e hlahisitsoeng le sebopeho se sa tloaelehang sa mosebedisi se lumellang bahlahlobisisi hore ba kenelle habonolo le ka mokhoa o nepahetseng motheong oa khoutu o teng. Ho tloha ka nako eo, morero ona o 'nile oa ntlafatsoa ke sechaba' me o ntse o tsoela pele ho ba sethala sa liteko le lipatlisiso lefapheng la li-grammars tsa molao le mechine ea naha e fokolang.
Lintlafatso tsa mantlha ho mofuta oa 1.2:
E kentse mokhoa o mocha (o nolofalitsoeng) oa ho lekola pheletso ea data e kentsoeng
(Senyesemane “EOF rule”).
Bakeng sa sena, tlhophiso ea re2c:eof e kentsoe,
e u lumella ho khetha sebapali sa terminal,
le molao o khethehileng oa $ o tukang haeba lexer
ka katleho e fihlile pheletsong ea lintlha tse kentsoeng.
Ho latela nalane, re2c e fana ka khetho ea mekhoa e mengata ea netefatso bakeng sa
pheletso ea lintho tse kenang tse fapaneng ka moedi, katleho le bonolo
lits'ebetso. Mokhoa o mocha o etselitsoe ho nolofatsa khoutu ea ho ngola, ha
ha e ntse e sebetsa hantle ebile e sebetsa ka bongata. Mekhoa ea khale
e ntse e sebetsa 'me e ka khethoa maemong a mang.
E kentse bokhoni ba ho kenyelletsa lifaele tsa kantle ho sebelisa taelo
/*! kenyeletsa:re2c "file.re" */ moo faele.re
lena ke lebitso la faele e kenyeletsang. Re2c e batla lifaele bukeng e kenyelletsoeng ea faele,
hammoho le lethathamong la litsela tse boletsoeng ho sebelisoa khetho ea -I.
Lifaele tse kenyellelitsoeng li ka kenyelletsa lifaele tse ling.
Re2c e fana ka lifaele tse "tloaelehileng" ho kenyeletsa / directory
morero - ho lebeletsoe hore litlhaloso tse molemo li tla bokellana moo
lipolelo tse tloaelehileng, ntho e kang laebrari e tloaelehileng.
Ho fihlela joale, ka kopo ea basebetsi, faele e le 'ngoe e nang le litlhaloso tsa lihlopha tsa Unicode e kentsoe.
E kenyellelitse bokhoni ba ho hlahisa lifaele tsa hlooho ka mokhoa o ikhethileng
litaba tse sebelisang likhetho tsa -t --type-header (kapa ho loketse
litlhophiso) le litaelo tse ncha /*!header:re2c:on*/ le
/*!hlooho:re2c:off*/. Sena se ka ba molemo maemong ao
ha re2c e hloka ho hlahisa litlhaloso tsa mefuta-futa, meaho le macros,
e sebelisoang likarolong tse ling tsa phetolelo.
Re2c joale e utloisisa litlhaku tsa UTF8 le lihlopha tsa batho ba hlahang ka mokhoa o tloaelehileng.
Ka ho sa feleng, re2c e fetisa lipolelo tse kang "∀x ∃y" joalo ka.
tatellano ea litlhaku tsa 1-bit ASCII e2 88 80 78 20 e2 88 83 79
(likhoutu tsa hex), mme basebelisi ba tlameha ho baleha litlhaku tsa Unicode ka letsoho:
"u2200x u2203y". Sena ha se bonolo ebile ha sea lebelloa ho ba bangata
basebelisi (joalokaha ho pakoa ke litlaleho tsa liphoso tse sa feleng). Kahoo joale
re2c e fana ka khetho ea --input-encoding ,
e u lumellang ho fetola boitšoaro le ho hlalosa "∀x ∃y" joalo ka
2200 78 20 2203 79.
Re2c joale e lumella ts'ebeliso ea li-block tsa re2c tse tloaelehileng ho -r --reuse mode.
Sena se loketse haeba faele ea ho kenya e na le li-blocks tse ngata 'me ke tse ling feela tsa tsona
e hloka ho sebelisoa hape.
Hona joale o ka seta sebopeho sa litemoso le melaetsa ea liphoso
sebelisa khetho e ncha ea --location-format . Sebopeho sa GNU se bonts'itsoe
joalo ka filename:line:column:, le sebopeho sa MSVC joalo ka filename(line,column).
Karolo ena e ka ba molemo ho barati ba IDE.
Khetho ea --verbose le eona e kentsoe, e hatisang molaetsa o mokhuts'oane oa tlholo haeba e atlehile.
Mokhoa oa "ho lumellana" o nang le flex o ntlafalitsoe - liphoso tse ling li lokisitsoe 'me
e fosahetseng ea mokhanni maemong a sa tloaelehang.
Ho latela nalane, khetho ea -F --flex-support e u lumelletse ho ngola khoutu
e tsoakiloeng ka mokhoa o feto-fetohang le mokhoa oa re2c, e leng se etsang hore ho be bonolo ho arola.
Mokhoa oa ho lumellana le Flex ha o sebelisoe hangata ho khoutu e ncha,
empa re2c e ntse e tsoela pele ho e tšehetsa bakeng sa ho lumellana le morao.
Moetsi oa ho tlosa sehlopha sa libapali / joale oa sebetsa
pele o holisa khouto, e lumellang hore e sebelisoe maemong a mangata,
haeba ho sebelisoa khouto ea bolelele ba litlhaku tse feto-fetohang (mohlala UTF8).
Faele e hlahisoang e se e entsoe ka atomo: re2c e theha faele ea nakoana pele
ebe o ngola sephetho ho eona, ebe o reha faele ea nakoana ho tlhahiso
ts'ebetso e le 'ngoe.
Ho ea ka pono ea bahlahisi, re2c e fumane subsystem e felletseng haholoanyane
debugging Khoutu ea ho lokisa liphoso e se e holofetse meahong ea tokollo le
e ka nolofalloa ho sebelisoa khetho ea configure --enable-debug.
Tokollo ena e nkile nako e telele - hoo e ka bang selemo kaofela.
Bongata ba nako, joalo ka mehleng, bo ne bo sebelisoa ho nts'etsapele moralo oa theory le ho ngola
Lingoloa "Tlhahiso e Ntle ea POSIX Submatch ho NFA".
Li-algorithms tse hlalositsoeng sehloohong sena li sebelisoa laebraring ea liteko libre2c
(ho aha laeborari le li-benchmarks ho koetsoe ka mokhoa oa kamehla mme ho nolofalloa ke khetho ea tlhophiso
--noble-libs). Laeborari ha e nkuoe e le tlholisano ho e teng
merero e kang RE2, empa e le sethala sa lipatlisiso bakeng sa nts'etsopele ea tse ncha
algorithms (e ka sebelisoang ho re2c kapa mererong e meng).
E boetse e loketse ho ea ka pono ea tlhahlobo, litekanyetso le ho theha maqhama a lipuo tse ling.
Ke leboha baetsi ba re2c ho bohle ba thusitseng tokollo ena ho etsahala,
le ho setjhaba ka kakaretso bakeng sa mehopolo, ditlaleho tsa ditsitsiri, maqeba, maitshwaro, jj. ;]