tu silẹ , monomono atunnkanka lexical ọfẹ fun awọn ede C ati C ++. Ise agbese re2c ni akọkọ ti ṣẹda ni ọdun 1993 nipasẹ Peter Bamboulis gẹgẹbi olupilẹṣẹ esiperimenta ti awọn olutupalẹ lexical ti o yara pupọ, ti o yatọ si awọn olupilẹṣẹ miiran nipasẹ iyara ti koodu ti ipilẹṣẹ ati wiwo olumulo ti o rọ ni aiṣedeede ti o fun laaye awọn atunnkanka lati wa ni irọrun ati daradara ni ifibọ sinu ohun ti o wa tẹlẹ. ipilẹ koodu. Lati igbanna, iṣẹ akanṣe naa ti ni idagbasoke nipasẹ agbegbe ati tẹsiwaju lati jẹ pẹpẹ fun awọn idanwo ati iwadii ni aaye ti awọn girama ti iṣe deede ati awọn ẹrọ ipinlẹ ipari.
Awọn iyipada akọkọ:
- Atilẹyin ti a ṣafikun fun ede Go (ti ṣiṣẹ boya nipasẹ aṣayan “--lang go” fun re2c, tabi gẹgẹbi eto re2go lọtọ). Awọn iwe fun C ati Go jẹ ipilẹṣẹ lati ọrọ kanna, ṣugbọn pẹlu awọn apẹẹrẹ koodu oriṣiriṣi. Eto ipilẹ iran koodu ni re2c ti tun ṣe ni kikun, eyiti o yẹ ki o rọrun lati ṣe atilẹyin awọn ede tuntun ni ọjọ iwaju.
- Fikun eto kikọ yiyan lori CMake (o ṣeun !). Awọn igbiyanju lati tumọ re2c si CMake ti ṣe fun igba pipẹ, ṣugbọn titi di igba ligfx ko si ẹnikan ti o dabaa ojutu kikun. Eto kikọ Autotools atijọ tẹsiwaju lati ni atilẹyin ati lilo, ati pe ko si awọn ero lati kọ silẹ ni ọjọ iwaju ti a le rii (apakan lati yago fun ṣiṣẹda awọn iṣoro fun awọn olupilẹṣẹ pinpin, ni apakan nitori eto kikọ atijọ jẹ iduroṣinṣin diẹ sii ati ṣoki diẹ sii ju ti tuntun lọ. ). Awọn ọna ṣiṣe mejeeji ni idanwo nigbagbogbo ni lilo Travis CI.
- Ṣe afikun agbara lati pato koodu wiwo ni awọn atunto nigba lilo API jeneriki. Ni iṣaaju, ọpọlọpọ awọn API ni lati wa ni pato ni irisi awọn iṣẹ tabi awọn macros iṣẹ. Bayi wọn le ṣe pato ni irisi awọn gbolohun ọrọ lainidii pẹlu awọn aye awoṣe ti a darukọ ti fọọmu “@@{orukọ}” tabi nirọrun “@@” (ti o ba wa ni paramita kan nikan ati pe ko si aibikita). Ara API ti ṣeto nipasẹ re2c:api: atunto ara (iye awọn iṣẹ n ṣalaye ara iṣẹ, ati fọọmu ọfẹ n tọka ara lainidii).
- Iṣiṣẹ ti aṣayan “-c”, “—awọn ipo-ibẹrẹ” ti ni ilọsiwaju, gbigba ọ laaye lati ṣajọpọ ọpọlọpọ awọn lexers ti o ni asopọ ni bulọọki re2c kan. Bayi o le lo awọn bulọọki deede pẹlu awọn ti o wa ni ipo ati ṣalaye ọpọlọpọ awọn bulọọki ipo alailẹgbẹ ninu faili kan. Imudara iṣẹ-ṣiṣe ti aṣayan "-r", "--tunlo" (atunṣe koodu lati bulọki kan ninu awọn bulọọki miiran) ni apapo pẹlu "-c", "--start-conditions" ati "-f", "-- awọn aṣayan ipamọ-ipinle (lexer ti o ni ipinlẹ ti o le da duro ni aaye eyikeyi ati tẹsiwaju ipaniyan nigbamii).
- Kokoro kan ti o wa titi ni algorithm ipari-ti-iwọle ti a ṣafikun laipẹ (ofin EOF), eyiti ni awọn ọran to ṣọwọn yorisi sisẹ aṣiṣe ti awọn ofin agbekọja.
- Ilana bootstrap ti jẹ irọrun. Ni iṣaaju, eto kikọ gbiyanju lati wa ni agbara lati wa re2c ti a ti kọ tẹlẹ ti o le ṣee lo lati tun ṣe funrararẹ. Eyi yori si awọn igbẹkẹle ti ko tọ (nitori ayaworan igbẹkẹle jẹ agbara, eyiti ọpọlọpọ awọn eto kikọ ko fẹran). Ni bayi, lati tun awọn lexers kọ, o nilo lati tunto ni gbangba eto kikọ ki o ṣeto oniyipada RE2C_FOR_BUILD.
orisun: opennet.ru
