Sgaoileadh gineadair lexer re2c 2.0

thachair leigeil ma sgaoil ath2c 2.0, gineadair anailisiche briathrachais an-asgaidh airson cànanan C agus C ++. Chaidh am pròiseact re2c a chruthachadh an toiseach ann an 1993 le Peter Bamboulis mar ghineadair deuchainneach de mhion-sgrùdairean briathrachais fìor luath, eadar-dhealaichte bho ghineadairean eile a rèir 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 fighe a-steach gu furasta agus gu h-èifeachdach. bunait còd. 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.

Atharraichean mòra:

  • Taic a bharrachd don chànan Go (air a chomasachadh leis an roghainn “--lang go” airson re2c, no mar phrògram re2go air leth). Tha na sgrìobhainnean airson C and Go air an gineadh bhon aon teacsa, ach le eisimpleirean còd eadar-dhealaichte. Chaidh an fho-shiostam gineadh còd ann an re2c ath-dhealbhadh gu tur, a bu chòir a dhèanamh nas fhasa taic a thoirt do chànanan ùra san àm ri teachd.
  • Chuir sinn siostam togail eile ris airson CMake (taing ligfx!). Chaidh oidhirpean gus re2c eadar-theangachadh gu CMake a dhèanamh airson ùine mhòr, ach gus an do ligfx cha do mhol duine fuasgladh làn-chuimseach. Tha an t-seann siostam togail Autotools fhathast a’ faighinn taic agus cleachdadh, agus chan eil planaichean ann a thrèigsinn san àm ri teachd (gu ìre gus duilgheadasan a sheachnadh do luchd-leasachaidh cuairteachaidh, gu ìre leis gu bheil an seann siostam togail nas seasmhaiche agus nas pongail na am fear ùr. ). Bithear a’ dèanamh deuchainn leantainneach air an dà shiostam a’ cleachdadh Travis CI.
  • Chuir sinn ris a’ chomas còd eadar-aghaidh a shònrachadh ann an rèiteachaidhean nuair a bhios tu a’ cleachdadh an API coitcheann. Roimhe sin, dh'fheumadh a 'mhòr-chuid de APIan a bhith air an sònrachadh ann an cruth gnìomhan no macros gnìomh. A-nis faodar an sònrachadh ann an cruth sreangan neo-riaghailteach le paramadairean teamplaid ainmichte den fhoirm “@@{name}” no dìreach “@@” (mura h-eil ann ach aon paramadair agus nach eil teagamh sam bith ann). Tha an stoidhle API air a shuidheachadh leis an rèiteachadh stoidhle re2c: api: (tha luach nan gnìomhan a’ sònrachadh an stoidhle gnìomh, agus tha foirm an-asgaidh a’ sònrachadh stoidhle neo-riaghailteach).
  • Chaidh obrachadh an roghainn “-c”, “-start-conditions” a leasachadh, a’ toirt cothrom dhut grunn lexers eadar-cheangailte a chur còmhla ann an aon bhloc re2c. A-nis faodaidh tu blocaichean cunbhalach a chleachdadh còmhla ri feadhainn le cumhachan agus grunn bhlocaichean cumhach neo-cheangailte a mhìneachadh ann an aon fhaidhle. Obrachadh nas fheàrr air an roghainn "-r", "--reuse" (còd ath-chleachdadh bho aon bhloca ann am blocaichean eile) còmhla ris na "-c", "--start-conditions" agus "-f", "-- roghainnean storable-state" (lexer stàiteil a dh’ fhaodar stad aig àm sam bith agus leantainn air adhart leis a’ chur gu bàs nas fhaide air adhart).
  • Chàirich sinn bug anns an algairim deireadh cuir a-steach (riaghailt EOF) a chaidh a chur ris o chionn ghoirid, a dh’ adhbhraich ann an cùisean ainneamh gu bhith a ’giullachd riaghailtean a bha a’ dol thairis air ceàrr.
  • Tha am pròiseas bootstrap air a dhèanamh nas sìmplidhe. Roimhe sin, dh’ fheuch an siostam togail ri re2c a chaidh a thogail mar-thà a lorg a ghabhadh a chleachdadh airson ath-thogail. Dh’ adhbhraich seo eisimeileachd ceàrr (seach gu robh an graf eisimeileachd fiùghantach, rud nach toil leis a’ mhòr-chuid de shiostaman togail). A-nis, gus lexers ath-thogail, feumaidh tu an siostam togail a rèiteachadh gu soilleir agus an caochladair RE2C_FOR_BUILD a shuidheachadh.

Source: fosgailtenet.ru

Cuir beachd ann