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

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

ለመልቀቅ ዝግጅት አንድ ዓመት ገደማ ፈጅቷል። አብዛኛው ጊዜ፣ እንደ ሁልጊዜው፣ የንድፈ ሃሳባዊ ማዕቀፍ በማዘጋጀት እና በመጻፍ ላይ ነበር።
መጣጥፎች "በኤንኤፍኤ ላይ ውጤታማ የPOSIX ንዑስ ተዛማጅ ማውጣት".
በአንቀጹ ውስጥ የተገለጹት ስልተ ቀመሮች በሙከራ ሊብሬ2c ቤተ-መጽሐፍት ውስጥ ተተግብረዋል።
(የላይብረሪውን መገንባት እና የአፈጻጸም ሙከራዎች በነባሪነት ተሰናክለዋል እና በ"-enable-libs" ውቅር አማራጭ ነቅቷል)። ቤተ መፃህፍቱ እንደ RE2 ላሉ ፕሮጄክቶች ተፎካካሪ ሳይሆን ለአዲሶች ልማት የምርምር መድረክ የታሰበ ነው።
አልጎሪዝም (ከዚያም በ re2c ወይም በሌሎች ፕሮጀክቶች ውስጥ ጥቅም ላይ ሊውል ይችላል). በተጨማሪም ከሙከራ እይታ አንጻር ሲታይ, አፈፃፀሙን መለካት እና ከሌሎች ቋንቋዎች ጋር ትስስር መፍጠር ምቹ ነው.

በስሪት re2c 1.2 ውስጥ ዋና ፈጠራዎች፡-

  • የግቤት ውሂቡን መጨረሻ ለመፈተሽ አዲስ ቀለል ያለ ዘዴ ታክሏል ("EOF ደንብ")። ለዚህም የ"re2c:eof" ውቅር ተጨምሯል፣
    የተርሚናል ቁምፊ እንዲመርጡ ያስችልዎታል ፣
    እና ልዩ ህግ "$", እሱም የሚቀሰቅሰው ሌክሰር ከሆነ
    በተሳካ ሁኔታ የግቤት ውሂቡ መጨረሻ ላይ ደርሷል።
    በታሪክ፣ re2c ለመፈተሽ በርካታ መንገዶችን ይሰጣል
    የግብአት መጨረሻ በውስንነት፣ ቅልጥፍና እና ቀላልነት ይለያያል
    መተግበሪያዎች. አዲሱ ዘዴ የአጻጻፍ ኮድን ለማቃለል የተቀየሰ ሲሆን, ሳለ
    ውጤታማ እና በሰፊው የሚተገበር ሆኖ ሳለ. የድሮ መንገዶች
    አሁንም ይሰራል እና በአንዳንድ ሁኔታዎች ሊመረጥ ይችላል.

  • መመሪያውን በመጠቀም ውጫዊ ፋይሎችን የማካተት ችሎታ ታክሏል።
    "/*!include:re2c"file.re"*/"የሚጨመርበት የፋይል ስም ሲሆን"file.re" Re2c የፋይል ማውጫን ጨምሮ ፋይሎችን ይፈልጋል፣
    እንዲሁም "-I" የሚለውን አማራጭ በመጠቀም በተገለጹት የመንገዶች ዝርዝር ውስጥ.
    የተካተቱ ፋይሎች ሌሎች ፋይሎችን ሊያካትቱ ይችላሉ።
    Re2c በ"ማካተት/" ማውጫ ውስጥ "መደበኛ" ፋይሎችን ያቀርባል
    ፕሮጀክት - ጠቃሚ ትርጓሜዎች እዚያ እንደሚከማቹ ይጠበቃል
    መደበኛ መግለጫዎች, በመደበኛ ቤተ-መጽሐፍት መንፈስ ውስጥ የሆነ ነገር.
    እስካሁን ድረስ፣ በሠራተኞቹ ጥያቄ፣ የዩኒኮድ ምድቦች ፍቺ ያለው አንድ ፋይል ተጨምሯል።

  • የራስጌ ፋይሎችን በዘፈቀደ የማመንጨት ችሎታ ታክሏል።
    ይዘት "-t --type-header" አማራጮችን በመጠቀም (ወይም ተገቢ
    ውቅሮች) እና አዲስ መመሪያዎች "/*! ራስጌ: re2c: ላይ */" እና
    "/*! ራስጌ: re2c: ጠፍቷል*/". ይህ የት ጉዳዮች ላይ ጠቃሚ ሊሆን ይችላል
    re2c ለተለዋዋጮች ፣ መዋቅሮች እና ማክሮዎች ትርጓሜዎችን ማመንጨት ሲያስፈልግ ፣
    በሌሎች የትርጉም ክፍሎች ውስጥ ጥቅም ላይ ይውላል.

  • Re2c አሁን UTF8 ቀጥተኛ ቃላትን እና የቁምፊ ክፍሎችን በመደበኛ አገላለጾች ተረድቷል።
    በነባሪ፣ re2c እንደ "∀x∃y" ያሉ አባባሎችን ይተነትናል።
    የ1-ቢት ASCII ቁምፊዎች ቅደም ተከተል "e2 88 80 78 20 e2 88 83 79"
    (ሄክስ ኮዶች)፣ እና ተጠቃሚዎች የዩኒኮድ ቁምፊዎችን በእጅ ማምለጥ አለባቸው፡-
    "\u2200x \\ u2203y". ይህ ለብዙዎች በጣም የማይመች እና ያልተጠበቀ ነው
    ተጠቃሚዎች (በቋሚ የሳንካ ሪፖርቶች እንደተረጋገጠው)። እና አሁን
    re2c አማራጩን ያቀርባል "--input-encoding {ascii | utf8}”፣
    ባህሪውን እንዲቀይሩ እና "∀x ∃y" እንደ እንዲተነተኑ ያስችልዎታል
    "2200 78 20 2203 79."

  • Re2c አሁን መደበኛ re2c ብሎኮችን በ"-r --reuse" ሁነታ ላይ መጠቀም ያስችላል።
    የግቤት ፋይሉ ብዙ ብሎኮችን እና የተወሰኑትን ብቻ ከያዘ ይህ ምቹ ነው።
    እንደገና ጥቅም ላይ መዋል አለበት.

  • አሁን የማስጠንቀቂያዎችን እና የስህተት መልዕክቶችን ቅርጸት ማዘጋጀት ይችላሉ
    አዲሱን አማራጭ በመጠቀም "--location-format {gnu | msvc}" የጂኤንዩ ቅርጸት ይታያል
    እንደ "ፋይል ስም: መስመር: አምድ:" እና የ MSVC ቅርጸት እንደ "የፋይል ስም (መስመር, አምድ)" ቅርጸት.
    ይህ ባህሪ ለ IDE አፍቃሪዎች ጠቃሚ ሊሆን ይችላል።
    ከተሳካ አጭር የድል መልእክት የሚያሳየው የ"--verbose" አማራጭም ተጨምሯል።

  • ከተለዋዋጭ ጋር ያለው "ተኳሃኝነት" ሁነታ ተሻሽሏል - አንዳንድ የመተንተን ስህተቶች ተስተካክለዋል እና
    አልፎ አልፎ ውስጥ ትክክል ያልሆነ ኦፕሬተር ቅድሚያ.
    ከታሪክ አንጻር፣ የ "-F --flex-supor" አማራጭ ኮድ እንዲጽፉ አስችሎታል።
    በተለዋዋጭ ዘይቤ እና በ re2c ዘይቤ የተቀላቀለ፣ ይህም ለመተንተን ትንሽ አስቸጋሪ ያደርገዋል።
    Flex ተኳኋኝነት ሁነታ በአዲሱ ኮድ ውስጥ እምብዛም ጥቅም ላይ አይውልም,
    ግን re2c ለኋላ ተኳኋኝነት መደገፉን ቀጥሏል።

  • የቁምፊ ክፍል ቅነሳ ኦፕሬተር "/" አሁን ተፈጻሚ ይሆናል።
    በብዙ ጉዳዮች ላይ ጥቅም ላይ እንዲውል የሚያስችለውን ኢንኮዲንግ ከመክፈቱ በፊት ፣
    ተለዋዋጭ ርዝመት ኢንኮዲንግ ጥቅም ላይ ከዋለ (እንደ UTF8)።

  • የውጤት ፋይል አሁን በአቶሚክ ተፈጥሯል፡ re2c በመጀመሪያ ጊዜያዊ ፋይል ይፈጥራል
    እና ውጤቱን ለእሱ ይጽፋል, እና ከዚያ ጊዜያዊውን ፋይል ወደ ውፅዓት ይለውጠዋል
    አንድ ቀዶ ጥገና.

  • ሰነዶች ተጨምረዋል እና እንደገና ተጽፈዋል; በተለይ አዲስ
    ምዕራፎች ስለ http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и የግቤት ውሂብ መጨረሻን ስለመፈተሽ መንገዶች.
    አዲሱ ሰነድ እንደ የተጠናቀረ ነው።
    አጠቃላይ ባለ አንድ ገጽ መመሪያ
    ከምሳሌዎች ጋር (ተመሳሳይ ምንጮች በማንፔጅ እና በኦንላይን ሰነዶች ውስጥ ቀርበዋል).
    በስልኮች ላይ የጣቢያውን ተነባቢነት ለማሻሻል ጥቂት ሙከራዎች ተደርገዋል።

  • ከገንቢው እይታ፣ re2c የበለጠ የተሟላ ንዑስ ስርዓት አግኝቷል
    ማረም. የማረሚያ ኮድ አሁን በመልቀቂያ ግንባታዎች እና ውስጥ ተሰናክሏል።
    "--enable-debug" የሚለውን የማዋቀር አማራጭ በመጠቀም ማንቃት ይቻላል።

ምንጭ: opennet.ru

አስተያየት ያክሉ