Sgaoileadh gineadair lexer re2c 1.2

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.

  • Chaidh na sgrìobhainnean a chrìochnachadh agus ath-sgrìobhadh; gu sònraichte, chaidh feadhainn ùra a chur ris
    caibideilean mu dheidhinn http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и mu dhòighean air sgrùdadh a dhèanamh airson deireadh dàta cuir a-steach.
    Tha na sgrìobhainnean ùra air an cruinneachadh anns an fhoirm
    stiùireadh farsaing aon-dhuilleag
    le eisimpleirean (tha na h-aon stòran air an toirt seachad air an duilleag-làimhe agus anns na sgrìobhainnean air-loidhne).
    Chaidh droch oidhirpean a dhèanamh gus leughadh na làraich air fònaichean a leasachadh.

  • 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".

Source: fosgailtenet.ru

Cuir beachd ann