re2c 1.2 лексик анализатор үүсгэгчийг гаргалаа

болсон суллах re2c, C ба C++ хэлний үнэгүй лексик анализатор үүсгэгч. Re2c-ийг 1993 онд Питер Бамбулис маш хурдан лексик анализаторын туршилтын үүсгүүр болгон бичсэнийг санаарай. суурь. Тэр цагаас хойш уг төслийг олон нийт боловсруулж, албан ёсны дүрэм, хязгаарлагдмал төрийн машинуудын чиглэлээр туршилт, судалгааны платформ байсаар байна.

Гаргах бэлтгэл бараг бүтэн жил үргэлжилсэн. Ихэнх цагаа урьдын адил онолын үндэслэл боловсруулах, бичихэд зарцуулсан
нийтлэл "NFA дээр үр дүнтэй POSIX Submatch Extraction".
Нийтлэлд дурдсан алгоритмуудыг libre2c туршилтын номын санд хэрэгжүүлсэн
(номын сан байгуулах болон гүйцэтгэлийн тестийг анхдагчаар идэвхгүй болгосон бөгөөд "—enable-libs" тохиргооны сонголтоор идэвхжүүлсэн). Номын сан нь RE2 зэрэг одоо байгаа төслүүдийн өрсөлдөгч биш, харин шинэ төслүүдийг хөгжүүлэх судалгааны платформ юм.
алгоритмууд (үүнийг дараа нь re2c эсвэл бусад төслүүдэд ашиглаж болно). Энэ нь туршилт хийх, гүйцэтгэлийг хэмжих, бусад хэлтэй холбоход тохиромжтой.

re2c 1.2 хувилбарын гол шинэчлэлүүд:

  • Оролтын өгөгдлийн төгсгөлийг шалгах хялбаршуулсан шинэ аргыг нэмсэн ("EOF дүрэм"). Үүний тулд "re2c:eof" тохиргоог нэмсэн.
    терминал тэмдэгтийг сонгох боломжийг танд олгоно,
    болон тусгай дүрэм "$", lexer бол өдөөгдөж байна
    оролтын өгөгдлийн төгсгөлд амжилттай хүрсэн.
    Түүхээс харахад re2c нь хэд хэдэн баталгаажуулах аргыг сонгох боломжийг олгодог
    хязгаарлалт, үр ашиг, энгийн байдлаараа ялгаатай оролтын төгсгөл
    програмууд. Шинэ арга нь код бичихийг хялбарчлах зорилготой юм
    үр дүнтэй, өргөн хэрэглэгдэх боломжтой хэвээр байна. Хуучин аргууд
    ажиллаж байгаа бөгөөд зарим тохиолдолд илүүд үзэж болно.

  • Зааварыг ашиглан гадаад файлуудыг оруулах боломжийг нэмсэн
    "/*!include:re2c "file.re" */", энд "file.re" нь оруулах файлын нэр юм. Re2c нь файлын лавлах доторх файлуудыг хайдаг.
    түүнчлэн "-I" сонголтыг ашиглан тодорхойлсон замуудын жагсаалтад.
    Оруулсан файлууд нь бусад файлуудыг агуулж болно.
    Re2c нь "include/" сан дахь "стандарт" файлуудыг өгдөг
    төсөл - ашигтай тодорхойлолтууд тэнд хуримтлагдана гэж найдаж байна
    ердийн хэллэг, стандарт номын сан гэх мэт.
    Одоогоор ажилчдын хүсэлтээр Юникод ангиллын тодорхойлолт бүхий нэг файлыг нэмж орууллаа.

  • Толгой файлуудыг дур зоргоороо үүсгэх чадварыг нэмсэн
    "-t --type-header" сонголтуудыг ашиглан контент (эсвэл тохиромжтой
    тохиргоонууд) болон шинэ удирдамжууд "/*!header:re2c:on*/" болон
    "/*!толгой:re2c:off*/". Энэ нь зарим тохиолдолд ашигтай байж болох юм
    re2c нь хувьсагч, бүтэц, макроны тодорхойлолтыг гаргах шаардлагатай үед,
    бусад орчуулгын нэгжид ашигладаг.

  • Re2c нь одоо UTF8 үгийн утга болон ердийн илэрхийлэл дэх тэмдэгтийн ангиллыг ойлгодог болсон.
    Өгөгдмөлөөр re2c нь "∀x ∃y" гэх мэт илэрхийллийг задлан шинжилдэг
    1 битийн ASCII тэмдэгтүүдийн дараалал “e2 88 80 78 20 e2 88 83 79”
    (hex кодууд) бөгөөд хэрэглэгчид Юникод тэмдэгтүүдээс гараар зугтах ёстой:
    “\\u2200x \\u2203y.” Энэ нь олон хүний ​​хувьд маш тохиромжгүй бөгөөд гэнэтийн зүйл юм
    хэрэглэгчид (тогтмол алдааны тайлангаар нотлогддог). Тэгэхээр одоо
    re2c нь "--input-encoding {ascii | utf8}",
    Энэ нь зан төлөвийг өөрчлөх, "∀x ∃y"-г задлан шинжлэх боломжийг олгодог
    "2200 78 20 2203 79."

  • Re2c одоо ердийн re2c блокуудыг "-r --reuse" горимд ашиглах боломжийг олгодог.
    Хэрэв оролтын файл нь олон блок, зөвхөн заримыг нь агуулж байвал энэ нь тохиромжтой
    дахин ашиглах шаардлагатай.

  • Одоо та анхааруулга болон алдааны мэдэгдлийн форматыг тохируулах боломжтой
    шинэ сонголтыг ашиглан "--location-format {gnu | msvc}". GNU формат гарч ирнэ
    "файлын нэр: мөр: багана:", MSVC форматыг "файлын нэр (мөр, багана)" гэж бичнэ.
    Энэ функц нь IDE-д дуртай хүмүүст хэрэгтэй байж болох юм.
    "--verbose" сонголтыг мөн нэмсэн бөгөөд хэрэв амжилттай болвол ялалтын богино мессежийг харуулдаг.

  • Флекстэй "нийцтэй байх" горим сайжирсан - задлан шинжлэхийн зарим алдааг зассан
    ховор тохиолдолд буруу операторын давуу эрх.
    Түүхийн хувьд "-F --flex-suppor" сонголт нь танд код бичих боломжийг олгосон
    flex style болон re2c стильд холилдсон нь задлан шинжлэхэд бага зэрэг хүндрэл учруулдаг.
    Flex нийцтэй горимыг шинэ кодонд бараг ашигладаггүй.
    гэхдээ re2c нь буцаад нийцтэй байхын тулд үүнийг үргэлжлүүлэн дэмжсээр байна.

  • Тэмдэгтийн ангийн хасах оператор "/" одоо хэрэгжиж байна
    илүү олон тохиолдолд ашиглах боломжийг олгодог кодчилолыг өргөжүүлэхээс өмнө,
    хувьсах тэмдэгтийн урт кодчилол ашиглаж байгаа бол (жишээ нь UTF8).

  • Гаралтын файлыг атомаар үүсгэсэн: re2c эхлээд түр зуурын файл үүсгэдэг
    үр дүнг нь бичээд түр файлын нэрийг гаралт болгон өөрчилнө
    нэг ажиллагаа.

  • Баримт бичгийг бөглөж, дахин бичсэн; тэр дундаа шинээр нэмэгдсэн
    тухай бүлгүүд http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и оролтын өгөгдлийн төгсгөлийг шалгах аргуудын тухай.
    Шинэ баримт бичгийг маягтаар цуглуулсан
    иж бүрэн нэг хуудас гарын авлага
    жишээнүүдийн хамт (ижил эх сурвалжийг хуудас болон онлайн баримт бичигт оруулсан болно).
    Утсанд сайтын унших чадварыг сайжруулах оролдлого тааруухан хийгдсэн.

  • Хөгжүүлэгчдийн үзэж байгаагаар re2c нь илүү бүрэн гүйцэд дэд системийг олж авсан
    дибаг хийх Дибаг хийх кодыг одоо хувилбарын хувилбаруудад идэвхгүй болгосон
    "--enable-debug" тохиргооны сонголтыг ашиглан идэвхжүүлж болно.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх