re2c 2.0 லெக்சிகல் அனலைசர் ஜெனரேட்டரின் வெளியீடு

நடைபெற்றது வெளியீடு re2c 2.0, C மற்றும் C++ மொழிகளுக்கான இலவச லெக்சிகல் அனலைசர் ஜெனரேட்டர். re2c திட்டம் முதலில் 1993 இல் பீட்டர் பாம்பூலிஸால் மிக வேகமான லெக்சிக்கல் பகுப்பாய்விகளின் சோதனை ஜெனரேட்டராக உருவாக்கப்பட்டது, பிற ஜெனரேட்டர்களில் இருந்து உருவாக்கப்பட்ட குறியீட்டின் வேகம் மற்றும் அசாதாரண நெகிழ்வான பயனர் இடைமுகம் ஆகியவற்றால் பகுப்பாய்விகளை எளிதாகவும் திறமையாகவும் உட்பொதிக்க அனுமதிக்கிறது. குறியீடு அடிப்படை. அப்போதிருந்து, இந்த திட்டம் சமூகத்தால் உருவாக்கப்பட்டது மற்றும் முறையான இலக்கணங்கள் மற்றும் வரையறுக்கப்பட்ட மாநில இயந்திரங்கள் துறையில் சோதனைகள் மற்றும் ஆராய்ச்சிக்கான தளமாகத் தொடர்கிறது.

முக்கிய மாற்றங்கள்:

  • Go மொழிக்கான ஆதரவு சேர்க்கப்பட்டது (re2cக்கான “--lang go” விருப்பத்தால் அல்லது தனி re2go நிரலாக இயக்கப்பட்டது). C மற்றும் Go க்கான ஆவணங்கள் ஒரே உரையிலிருந்து உருவாக்கப்பட்டன, ஆனால் வெவ்வேறு குறியீடு எடுத்துக்காட்டுகளுடன். re2c இல் உள்ள குறியீடு உருவாக்க துணை அமைப்பு முற்றிலும் மறுவடிவமைப்பு செய்யப்பட்டுள்ளது, இது எதிர்காலத்தில் புதிய மொழிகளை ஆதரிப்பதை எளிதாக்கும்.
  • CMake க்கான மாற்று உருவாக்க அமைப்பு சேர்க்கப்பட்டது (நன்றி ligfx!). CMake க்கு re2c மொழிபெயர்ப்பதற்கான முயற்சிகள் நீண்ட காலமாக மேற்கொள்ளப்பட்டு வருகின்றன, ஆனால் ligfx வரை யாரும் முழு அளவிலான தீர்வை முன்மொழியவில்லை. பழைய Autotools பில்ட் சிஸ்டம் தொடர்ந்து ஆதரிக்கப்பட்டு பயன்படுத்தப்படுகிறது, மேலும் எதிர்காலத்தில் அதை கைவிடும் திட்டம் எதுவும் இல்லை (விநியோக டெவலப்பர்களுக்கு சிக்கல்களை உருவாக்குவதைத் தவிர்க்க, பழைய உருவாக்க அமைப்பு புதியதை விட நிலையானது மற்றும் சுருக்கமானது. ) இரண்டு அமைப்புகளும் டிராவிஸ் CI ஐப் பயன்படுத்தி தொடர்ந்து சோதிக்கப்படுகின்றன.
  • பொதுவான API ஐப் பயன்படுத்தும் போது உள்ளமைவுகளில் இடைமுகக் குறியீட்டைக் குறிப்பிடும் திறன் சேர்க்கப்பட்டது. முன்பு, பெரும்பாலான ஏபிஐகள் செயல்பாடுகள் அல்லது ஃபங்ஷன் மேக்ரோக்கள் வடிவத்தில் குறிப்பிடப்பட வேண்டும். இப்போது அவை “@@{name}” அல்லது வெறுமனே “@@” வடிவத்தின் பெயரிடப்பட்ட டெம்ப்ளேட் அளவுருக்களுடன் தன்னிச்சையான சரங்களின் வடிவத்தில் குறிப்பிடப்படலாம் (ஒரே அளவுரு இருந்தால் மற்றும் தெளிவின்மை இல்லை). API பாணியானது re2c:api:style கட்டமைப்பால் அமைக்கப்படுகிறது (செயல்பாடுகளின் மதிப்பு செயல்பாட்டு பாணியைக் குறிப்பிடுகிறது, மற்றும் இலவச-படிவம் தன்னிச்சையான பாணியைக் குறிப்பிடுகிறது).
  • "-c", "-start-conditions" விருப்பத்தின் செயல்பாடு மேம்படுத்தப்பட்டுள்ளது, இது ஒரு re2c பிளாக்கில் பல ஒன்றோடொன்று இணைக்கப்பட்ட லெக்சர்களை இணைக்க அனுமதிக்கிறது. இப்போது நீங்கள் நிபந்தனையுடன் வழக்கமான தொகுதிகளைப் பயன்படுத்தலாம் மற்றும் ஒரு கோப்பில் பல தொடர்பில்லாத நிபந்தனை தொகுதிகளை வரையறுக்கலாம். "-c", "--start-conditions" மற்றும் "-f", "-- உடன் இணைந்து "-r", "--reuse" விருப்பத்தின் மேம்படுத்தப்பட்ட செயல்பாடு (ஒரு தொகுதியிலிருந்து மற்ற தொகுதிகளில் குறியீட்டை மீண்டும் பயன்படுத்துதல்) storable-state" விருப்பத்தேர்வுகள் (எந்த நேரத்திலும் குறுக்கிடக்கூடிய மற்றும் பின்னர் செயல்படுத்துவதைத் தொடரக்கூடிய ஒரு மாநில லெக்சர்).
  • சமீபத்தில் சேர்க்கப்பட்ட எண்ட்-ஆஃப்-இன்புட் (EOF விதி) அல்காரிதத்தில் பிழை சரி செய்யப்பட்டது, இது அரிதான சந்தர்ப்பங்களில் ஒன்றுடன் ஒன்று விதிகளின் தவறான செயலாக்கத்திற்கு வழிவகுத்தது.
  • பூட்ஸ்ட்ராப் செயல்முறை எளிமைப்படுத்தப்பட்டுள்ளது. முன்னதாக, பில்ட் சிஸ்டம் ஏற்கனவே கட்டமைக்கப்பட்ட ஒரு re2c ஐக் கண்டுபிடிக்க முயற்சித்தது, அது தன்னை மீண்டும் உருவாக்கப் பயன்படும். இது தவறான சார்புகளுக்கு வழிவகுத்தது (ஏனெனில் சார்பு வரைபடம் மாறும், இது பெரும்பாலான உருவாக்க அமைப்புகளுக்கு பிடிக்காது). இப்போது, ​​லெக்சர்களை மீண்டும் கட்டமைக்க, நீங்கள் பில்ட் சிஸ்டத்தை வெளிப்படையாக உள்ளமைக்க வேண்டும் மற்றும் RE2C_FOR_BUILD மாறியை அமைக்க வேண்டும்.

ஆதாரம்: opennet.ru

கருத்தைச் சேர்