የ re2c ሌክሰር ጀነሬተር መልቀቅ 2.0

ወስዷል መልቀቅ re2c 2.0፣ ለ C እና C++ ቋንቋዎች ነፃ የቃላት ትንታኔ ጄኔሬተር። የ re2c ፕሮጀክት በመጀመሪያ በ 1993 በፒተር ባምቡሊስ የተፈጠረ በጣም ፈጣን የቃላት ተንታኞች የሙከራ ጄኔሬተር ሆኖ ከሌሎች ጄኔሬተሮች በተፈጠረው ኮድ ፍጥነት እና ያልተለመደ ተለዋዋጭ የተጠቃሚ በይነገጽ ተንታኞች በቀላሉ እና በብቃት ወደ ነባር እንዲገቡ ያስችላቸዋል። ኮድ መሠረት. ከዚያን ጊዜ ጀምሮ ፕሮጀክቱ በማህበረሰቡ ተዘጋጅቷል እና በመደበኛ ሰዋሰው እና ውሱን ግዛት ማሽኖች ላይ የሙከራ እና የምርምር መድረክ ሆኖ ቀጥሏል.

ዋና ለውጦች፡-

  • ለጎ ቋንቋ ተጨማሪ ድጋፍ (በ"--lang go" አማራጭ ለ re2c ወይም እንደ የተለየ re2go ፕሮግራም የነቃ)። የC እና Go ዶክመንቶች ከተመሳሳይ ጽሁፍ የመነጩ ናቸው፣ ግን ከተለያዩ የኮድ ምሳሌዎች ጋር። በ re2c ውስጥ ያለው የኮድ ማመንጨት ንዑስ ስርዓት ሙሉ ለሙሉ ተዘጋጅቷል፣ ይህም ወደፊት አዳዲስ ቋንቋዎችን መደገፍ ቀላል ማድረግ አለበት።
  • በCMake ላይ አማራጭ የግንባታ ስርዓት ታክሏል (እናመሰግናለን። ligfx!) re2cን ወደ CMake ለመተርጎም የተደረጉ ሙከራዎች ለረጅም ጊዜ ተደርገዋል፣ ነገር ግን እስከ ligfx ድረስ ማንም ሰው የተሟላ መፍትሄ አላቀረበም። የድሮው የ Autotools ግንባታ ስርዓት መደገፉን እና ጥቅም ላይ ማዋሉን ቀጥሏል, እና ለወደፊቱ ለመተው ምንም እቅድ የለም (በከፊል በስርጭት ገንቢዎች ላይ ችግር ላለመፍጠር, በከፊል የድሮው የግንባታ ስርዓት ከአዲሱ የበለጠ የተረጋጋ እና አጭር ነው. ). ሁለቱም ስርዓቶች Travis CI ን በመጠቀም ያለማቋረጥ ይሞከራሉ።
  • አጠቃላይ ኤፒአይ ሲጠቀሙ በውቅሮች ውስጥ የበይነገጽ ኮድ የመግለጽ ችሎታ ታክሏል። ከዚህ ቀደም አብዛኛዎቹ ኤፒአይዎች በተግባሮች ወይም በተግባራዊ ማክሮዎች መልክ መገለጽ ነበረባቸው። አሁን በዘፈቀደ ሕብረቁምፊዎች መልክ በተሰየሙ የአብነት ግቤቶች በ«@@{name}» ወይም በቀላሉ «@@» (አንድ መለኪያ ብቻ ካለ እና ምንም ግልጽነት ከሌለ) ሊገለጹ ይችላሉ። የኤፒአይ ቅጥ የሚዘጋጀው በre2c:api:style ውቅር ነው (የተግባር እሴቱ የተግባር ዘይቤን ይገልፃል እና ነፃ ቅፅ የዘፈቀደ ዘይቤን ይገልጻል)።
  • የ“-c”፣ “-start-conditions” አማራጭ አሠራር ተሻሽሏል፣ ይህም በርካታ እርስ በርስ የተያያዙ ሌክሰሮችን በአንድ re2c ብሎክ ውስጥ እንድታጣምር ያስችልሃል። አሁን መደበኛ ብሎኮችን ከሁኔታዎች ጋር መጠቀም እና በአንድ ፋይል ውስጥ ብዙ የማይዛመዱ ሁኔታዊ ብሎኮችን መግለጽ ይችላሉ። የተሻሻለ የ"-r"፣ "--reuse" አማራጭ (ከአንዱ ብሎክ የሚገኘውን ኮድ በሌሎች ብሎኮች እንደገና መጠቀም) ከ"-c"፣ "--start-conditions" እና "-f"፣ "-- ጋር በማጣመር የተሻሻለ አሰራር። ማከማቻ-ግዛት" አማራጮች (በማንኛውም ጊዜ ሊቋረጥ የሚችል እና በኋላ መፈጸሙን የሚቀጥል መንግስታዊ ሌክሰር)።
  • በቅርብ ጊዜ በተጨመረው የግቤት መጨረሻ (EOF ደንብ) ስልተ-ቀመር ውስጥ አንድ ሳንካ ተስተካክሏል፣ ይህም አልፎ አልፎ ተደራራቢ ሕጎችን ትክክል ያልሆነ ሂደት አስከትሏል።
  • የቡት ማሰሪያው ሂደት ቀላል ሆኗል. ከዚህ ቀደም የግንባታ ስርዓቱ እራሱን መልሶ ለመገንባት የሚያገለግል ቀድሞ የተሰራ re2c በተለዋዋጭ መንገድ ለማግኘት ሞክሯል። ይህ ወደ የተሳሳቱ ጥገኞች አመራ (ምክንያቱም የጥገኛ ግራፉ ተለዋዋጭ ነበር፣ ይህም አብዛኛዎቹ የግንባታ ስርዓቶች አይወዱም)። አሁን፣ ሌክሰሮችን እንደገና ለመገንባት፣ የግንባታ ስርዓቱን በግልፅ ማዋቀር እና የRE2C_FOR_BUILD ተለዋዋጭ ማዘጋጀት ያስፈልግዎታል።

ምንጭ: opennet.ru

አስተያየት ያክሉ