thachair leigeil ma sgaoil ath2c, gineadair anailisiche briathrachais an-asgaidh airson cànanan C agus C ++. Cuimhnich gun deach re2c a sgrìobhadh ann an 1993 le Peter Bambulis mar ghineadair deuchainneach de mhion-sgrùdairean briathrachais fìor luath, eadar-dhealaichte bho ghineadairean eile ann an astar a’ chòd a chaidh a chruthachadh agus eadar-aghaidh cleachdaiche neo-àbhaisteach sùbailte a leigeas le sgrùdairean a bhith air am filleadh a-steach gu furasta agus gu h-èifeachdach ann an còd a tha ann mu thràth. bonn. Bhon uairsin, chaidh am pròiseact a leasachadh leis a’ choimhearsnachd agus tha e fhathast na àrd-ùrlar airson deuchainnean agus rannsachadh ann an raon gràmair foirmeil agus innealan stàite crìochnaichte.
Thug ullachadh airson an naidheachd cha mhòr bliadhna air fad. Chaidh a 'mhòr-chuid den ùine, mar a bha e an-còmhnaidh, a chosg air frèam teòiridheach agus sgrìobhadh a leasachadh
artaigilean"Earrann submatch POSIX èifeachdach air NFA".
Tha na h-algorithms a tha air am mìneachadh san artaigil air an cur an gnìomh anns an leabharlann deuchainneach libre2c
(tha togail an leabharlainn agus deuchainnean coileanaidh ciorramach gu bunaiteach agus tha e air a chomasachadh leis an roghainn rèiteachaidh “-enable-libs”). Chan eil an leabharlann an dùil a bhith na cho-fharpaiseach do phròiseactan a tha ann mar RE2, ach mar àrd-ùrlar rannsachaidh airson feadhainn ùra a leasachadh
algorithms (a ghabhas an uair sin a chleachdadh ann an re2c no ann am pròiseactan eile). Tha e cuideachd goireasach bho shealladh deuchainn, tomhas dèanadais agus cruthachadh ceangail ri cànanan eile.
Prìomh innleachdan ann an dreach re2c 1.2:
Chuir sinn dòigh nas sìmplidhe ris airson sgrùdadh deireadh dàta cuir a-steach (“riaghailt EOF”). Airson seo, chaidh an rèiteachadh “re2c:eof” a chur ris,
a’ leigeil leat an caractar crìochnachaidh a thaghadh,
agus riaghailt shònraichte “$”, a tha air a phiobrachadh ma tha an lexer
soirbheachail gu deireadh an dàta cuir a-steach.
Gu h-eachdraidheil, tha re2c a’ toirt seachad taghadh de ghrunn dhòighean dearbhaidh airson
deireadh cuir a-steach ag atharrachadh ann an cuingealachadh, èifeachdas agus sìmplidheachd
iarrtasan. Tha an dòigh ùr air a dhealbhadh gus còd sgrìobhaidh a dhèanamh nas sìmplidhe, fhad 'sa tha
fhad ‘s a tha iad fhathast èifeachdach agus iomchaidh gu farsaing. Seann dòighean
fhathast ag obair agus is dòcha gum b’ fheàrr leotha ann an cuid de chùisean.
Chuir sinn ris comas faidhlichean taobh a-muigh a thoirt a-steach a’ cleachdadh stiùireadh
"/*!include:re2c "file.re" */", far a bheil "file.re" ainm an fhaidhle a thèid a ghabhail a-steach. Bidh Re2c a’ coimhead airson faidhlichean san eòlaire fhaidhlichean a’ toirt a-steach,
a bharrachd air an liosta de shlighean a chaidh a shònrachadh leis an roghainn “-I”.
Faodaidh faidhlichean eile a bhith air an toirt a-steach.
Tha Re2c a’ toirt seachad faidhlichean “àbhaisteach” anns an eòlaire “include/”.
pròiseact - thathar an dùil gun cruinnich mìneachaidhean feumail an sin
abairtean cunbhalach, rudeigin mar an leabharlann àbhaisteach.
Gu ruige seo, air iarrtas luchd-obrach, chaidh aon fhaidhle le mìneachaidhean de roinnean Unicode a chur ris.
Chuir sinn ris a’ chomas air faidhlichean cinn a ghineadh le neo-riaghailteach
susbaint a’ cleachdadh na roghainnean “-t --type-header” (no iomchaidh
rèiteachaidhean) agus stiùiridhean ùra "/*! header: re2c: air */" agus
"/*! header: re2c: dheth */". Faodaidh seo a bhith feumail ann an cùisean far a bheil
nuair a dh’fheumas re2c mìneachaidhean a ghineadh air caochladairean, structaran agus macros,
cleachdadh ann an aonadan eadar-theangachaidh eile.
Tha Re2c a-nis a’ tuigsinn litrichean UTF8 agus clasaichean caractar ann an abairtean cunbhalach.
Gu gnàthach, bidh re2c a’ parsadh abairtean mar “∀x ∃y” mar
sreath de charactaran 1-bit ASCII “e2 88 80 78 20 e2 88 83 79”
(còdan hex), agus feumaidh luchd-cleachdaidh teicheadh bho charactaran Unicode le làimh:
“\\ u2200x u2203y.” Tha seo gu math mì-ghoireasach agus ris nach robh dùil dha mòran
luchd-cleachdaidh (mar a chithear bho aithisgean bug cunbhalach). Mar sin a-nis
tha re2c a' toirt seachad an roghainn " --input-encoding {ascii | utf8}",
a leigeas leat an giùlan atharrachadh agus “∀x ∃y” a pharsadh mar
“2200 78 20 2203 79.”
Tha Re2c a-nis a’ ceadachadh blocaichean re2c cunbhalach a chleachdadh ann am modh “-r --reuse”.
Tha seo goireasach ma tha mòran bhlocaichean anns an fhaidhle cuir a-steach agus dìreach cuid dhiubh
feumar ath-chleachdadh.
A-nis faodaidh tu an cruth rabhaidhean agus teachdaireachdan mearachd a shuidheachadh
a' cleachdadh an roghainn ùr " --location-format {gnu | msvc}". Tha cruth GNU air a thaisbeanadh
mar "ainm faidhle: loidhne: colbh:", agus an cruth MSVC mar "ainm faidhle (loidhne, colbh)".
Faodaidh am feart seo a bhith feumail dha leannanan IDE.
Chaidh roghainn “--verbose” a chur ris cuideachd, a sheallas teachdaireachd buaidh ghoirid ma bhios e soirbheachail.
Chaidh am modh “co-chòrdalachd” le flex a leasachadh - chaidh cuid de mhearachdan parsaidh a shuidheachadh agus
prìomhachas gnìomhaiche ceàrr ann an cùisean ainneamh.
Gu h-eachdraidheil, thug an roghainn "-F --flex-suppor" cothrom dhut còd a sgrìobhadh
measgaichte ann an stoidhle flex agus stoidhle re2c, a tha ga dhèanamh beagan duilich parsadh.
Is ann ainneamh a thathas a’ cleachdadh modh co-chòrdalachd Flex ann an còd ùr,
ach tha re2c a' leantainn air adhart a' toirt taic dha airson co-fhreagarrachd air ais.
Tha gnìomhaiche toirt air falbh clas caractar "/" a-nis an sàs
mus tèid an còdachadh a leudachadh, a leigeas leis a chleachdadh ann an àireamh nas motha de chùisean,
ma thèid còdachadh faid caractar caochlaideach a chleachdadh (mar eisimpleir UTF8).
Tha am faidhle toraidh a-nis air a chruthachadh gu atamach: bidh re2c a’ cruthachadh faidhle sealach an toiseach
agus a 'sgrìobhadh an toradh a-steach ann, agus an uairsin ag ath-ainmeachadh am faidhle sealach chun an toraidh
aon obrachadh.
Bho shealladh an luchd-leasachaidh, tha re2c air fo-shiostam nas coileanta fhaighinn
debugging Tha còd dì-bhugachaidh a-nis à comas ann an togail fuasglaidh agus
Faodar a chomasachadh leis an roghainn rèiteachaidh "--enable-debug".