Ma ka Pōʻalima, ʻAukake 2, ua hoʻokuʻu ʻia ka hoʻokuʻu ʻana o re2c, kahi mea hoʻoheheʻe manuahi o nā loiloi lexical no nā ʻōlelo C a me C++. Ua kākau ʻia ʻo Re2c i ka makahiki 1993 e Peter Bamboulis ma ke ʻano he mea hoʻokolohua hoʻokolohua o nā mea loiloi lexical wikiwiki loa, ʻokoʻa ʻia mai nā mea hana ʻē aʻe e ka wikiwiki o ke code i hana ʻia a me kahi mea hoʻohana maʻalahi maʻalahi e hiki ai i nā mea nānā ke hoʻokomo maʻalahi a hoʻokomo pono i loko o kahi waihona code i loaʻa. 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.
Nā hana hou nui ma ka mana 1.2:
Hoʻohui i kahi ala hou (maʻalahi) e nānā i ka hopena o ka ʻikepili hoʻokomo
(English “EOF rule”).
No kēia, ua hoʻohui ʻia ka hoʻonohonoho re2c:eof,
hiki iā ʻoe ke koho i ke ʻano terminal,
a he $ rula kūikawā e puhi ana ina 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" */ where file.re
ʻO kēia ka inoa o ka waihona waihona. ʻIke ʻo Re2c i nā faila ma ka papa kuhikuhi waihona,
a me ka papa inoa o nā ala i kuhikuhi ʻia me ka hoʻohana ʻana i ke koho -I.
Hiki i nā faila ke komo i nā faila ʻē aʻe.
Hāʻawi ʻo Re2c i nā faila "maʻamau" i loko o ka waihona
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
ʻike 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 kahi koho --input-encoding ,
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 i ka hoʻohana ʻana i nā poloka re2c maʻamau i -r --reuse mode.
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 --location-format hou . Hōʻike ʻia ke ʻano GNU
e like me ka inoa waihona: laina: kolamu:, a me ka palapala MSVC ma ke ʻano he faila(laina, kolamu).
Pono paha kēia hiʻohiʻona no nā mea aloha IDE.
Ua hoʻohui pū ʻia kahi koho --verbose, e paʻi 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-support 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 / i kēia manawa
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 ke koho koho --enable-debug.
Ua lōʻihi kēia hoʻokuʻu ʻana - aneane hoʻokahi makahiki.
ʻ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
nāʻatikala "Ka unuhi ʻana o POSIX Submatch 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ā benchmarks e ka paʻ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 kēia manawa
nā papahana e like me RE2, akā ma ke ʻano 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).
Maikaʻi nō hoʻi mai ka manaʻo o ka hoʻāʻo ʻana, benchmarks a me ka hana ʻana i nā paʻa i nā ʻōlelo ʻē aʻe.
Mahalo i nā mea hoʻomohala re2c i nā mea a pau i kōkua i kēia hoʻokuʻu ʻana,
a i ke kaiāulu ma ka laulā no nā manaʻo, nā hōʻike hewa, nā paʻi, ka morale, etc. ;]