ua hanaia hoʻokuʻu re2c, he mea hoʻoheheʻe huaʻōlelo manuahi no nā ʻōlelo C a me C++. E hoʻomanaʻo ua kākau ʻia ʻo re2c i ka makahiki 1993 e Peter Bambulis ma ke ʻano he mea hoʻomohala hoʻokolohua o nā mea loiloi lexical wikiwiki loa, ʻokoʻa mai nā mea hana ʻē aʻe i ka wikiwiki o ka code i hana ʻia a me kahi mea hoʻohana maʻalahi maʻalahi e hiki ai i nā mea loiloi ke hoʻohui maʻalahi a maikaʻi i kahi code i loaʻa. kumu. Mai ia manawa, ua hoʻomohala ʻia ka papahana e ke kaiāulu a ke hoʻomau nei e lilo i kahua no nā hoʻokolohua a me ka noiʻi ʻana ma ke kahua o nā grammars formal a me nā mīkini mokuʻāina palena.
ʻO ka hoʻomākaukauʻana no ka hoʻokuʻuʻana i kahi makahiki a pau. ʻO ka hapa nui o ka manawa, e like me nā manawa a pau, ua hoʻohana ʻia i ka hoʻomohala ʻana i kahi papa hana a me ke kākau ʻana
'atikala "ʻO ka POSIX Submatch Extraction maikaʻi ma NFA".
Hoʻokomo ʻia nā algorithms i wehewehe ʻia ma ka ʻatikala ma ka hale waihona hoʻokolohua libre2c
(Hoʻopau ʻia ke kūkulu ʻana i ka hale waihona puke a me nā hoʻokolohua hana ma ke ʻano maʻamau a hiki ke hoʻohana ʻia e ke koho hoʻonohonoho "—enable-libs"). ʻAʻole i manaʻo ʻia ka waihona ma ke ʻano he mea hoʻokūkū i nā papahana e kū nei e like me RE2, akā he kahua noiʻi no ka hoʻomohala ʻana i nā mea hou.
algorithms (hiki ke hoʻohana ʻia i re2c a i ʻole i nā papahana ʻē aʻe). He mea maʻalahi hoʻi mai ka ʻike o ka hoʻāʻo ʻana, ke ana ʻana i ka hana a me ka hana ʻana i nā paʻa i nā ʻōlelo ʻē aʻe.
ʻO nā hana hou nui i ka mana re2c 1.2:
Hoʻohui i kahi ala maʻalahi hou no ka nānā ʻana i ka hopena o ka ʻikepili hoʻokomo ("EOF rule"). No kēia, ua hoʻohui ʻia ka hoʻonohonoho "re2c: eof",
hiki iā ʻoe ke koho i ke ʻano terminal,
a me kahi lula kūikawā "$", i hoʻomaka inā ka lexer
hiki i ka hopena o ka ʻikepili hoʻokomo.
Ma ka mōʻaukala, hāʻawi ʻo re2c i kahi koho o nā ala hōʻoia no
ka pau ʻana o nā hoʻokomo ʻokoʻa i ka palena, ka pono a me ka maʻalahi
nā noi. Hoʻolālā ʻia ke ala hou e hoʻomaʻamaʻa i ke kākau ʻana i ke code, ʻoiai
oiai e noho pono ana a pili nui. ʻO nā ala kahiko
hana mau a makemake paha i kekahi mau hihia.
Hoʻohui i ka hiki ke hoʻokomo i nā faila waho me ka hoʻohana ʻana i kahi kuhikuhi
"/*!include:re2c "file.re" */", kahi o "file.re" ka inoa o ka waihona e hookomoia. ʻIke ʻo Re2c i nā faila ma ka papa kuhikuhi waihona,
a me ka papa inoa o nā ala i kuhikuhi ʻia me ka koho "-I".
Hiki i nā faila ke komo i nā faila ʻē aʻe.
Hāʻawi ʻo Re2c i nā faila "maʻamau" i ka papa kuhikuhi "include/".
papahana - manaʻo ʻia e hōʻiliʻili nā wehewehe pono i laila
nā ʻōlelo maʻamau, kahi mea e like me ka waihona maʻamau.
I kēia manawa, ma ke noi o nā limahana, ua hoʻohui ʻia hoʻokahi faila me nā wehewehe o nā ʻano Unicode.
Hoʻohui i ka hiki ke hana i nā faila poʻomanaʻo me ka ʻole
ʻikepili me ka hoʻohana ʻana i nā koho "-t --type-header" (a i ʻole kūpono
hoʻonohonoho) a me nā kuhikuhi hou "/*!header:re2c:on*/" a
"/*!header:re2c:off*/". Pono paha kēia i nā hihia kahi
i ka wā e pono ai ka re2c e hoʻopuka i nā wehewehe o nā ʻano like ʻole, nā hale a me nā macros,
hoʻohana ʻia ma nā ʻāpana unuhi ʻē aʻe.
Hoʻomaopopo ʻo Re2c i nā huaʻōlelo UTF8 a me nā papa ʻano ma nā ʻōlelo maʻamau.
Ma ka paʻamau, hoʻokaʻawale ʻo re2c i nā ʻōlelo e like me "∀x ∃y" e like me
ke kaʻina o nā huaʻōlelo ASCII 1-bit "e2 88 80 78 20 e2 88 83 79"
(hex codes), a pono nā mea hoʻohana e pakele i nā huapalapala Unicode me ka lima:
“\\u2200x \\u2203y.” He mea maʻalahi kēia a me ka manaʻo ʻole no ka lehulehu
mea hoʻohana (e like me ka ʻike ʻia e nā hōʻike bug mau). No laila i kēia manawa
Hāʻawi ka re2c i ke koho "--input-encoding {ascii | utf8}",
hiki iā ʻoe ke hoʻololi i ke ʻano a hoʻololi i ka "∀x ∃y" e like me
“2200 78 20 2203 79.”
ʻAe ʻo Re2c i kēia manawa e hoʻohana i nā poloka re2c maʻamau i ke ʻano "-r --reuse".
He mea maʻalahi kēia inā loaʻa i ka faila hoʻokomo nā poloka he nui a ʻo kekahi wale nō o lākou
pono e hoohana hou ia.
I kēia manawa hiki iā ʻoe ke hoʻonohonoho i ke ʻano o nā ʻōlelo aʻo a me nā memo hewa
me ka hoʻohana ʻana i ke koho hou "--location-format {gnu | msvc}". Hōʻike ʻia ke ʻano GNU
ma ke ʻano he "filename:line:column:", a me ka format MSVC e like me "filename(line,column)".
Pono paha kēia hiʻohiʻona no nā mea aloha IDE.
Ua hoʻohui pū ʻia kahi koho "--verbose", e hōʻike ana i kahi leka lanakila pōkole inā kūleʻa.
Ua hoʻomaikaʻi ʻia ka mode "compatibility" me ka flex - ua hoʻoponopono ʻia kekahi mau hewa parsing a
hewa ʻole ka mea hoʻohana mua i nā hihia kakaʻikahi.
Ma ka mōʻaukala, ua ʻae ke koho "-F --flex-suppor" iā ʻoe e kākau i ke code
hui pū ʻia me ke ʻano flex a me ke ʻano re2c, kahi e paʻakikī iki ai ka parsing.
ʻAʻole hoʻohana pinepine ʻia ke ʻano hoʻohālikelike i nā code hou,
akā hoʻomau ʻo re2c i ke kākoʻo iā ia no ka hoʻokō ʻana i hope.
Hoʻohana ʻia ka mea hoʻohana unuhi papa ʻano "/".
ma mua o ka hoʻonui ʻana i ka encoding, hiki iā ia ke hoʻohana ʻia i nā hihia he nui,
inā hoʻohana ʻia ka hoʻopili ʻana i ka lōʻihi o ke ʻano loli (no ka laʻana UTF8).
Hoʻokumu ʻia ka faila hoʻopuka i kēia manawa: hana ʻo re2c i kahi faila manawaleʻa mua
a kākau i ka hopena i loko, a laila kapa hou i ka faila manawa i ka hoʻopuka
hoʻokahi hana.
Mai ka manaʻo o nā mea hoʻomohala, ua loaʻa iā re2c kahi subsystem piha piha
hoʻopaʻapaʻa Ua pio ka code debugging i nā hana hoʻokuʻu a
hiki ke hoʻohana ʻia me ka hoʻohana ʻana i ke koho hoʻonohonoho "--enable-debug".