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

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 сонголтыг өгдөг ,
    Энэ нь танд зан төлөвийг өөрчлөх, "∀x ∃y"-г задлан шинжлэх боломжийг олгодог
    2200 78 20 2203 79 хувилбар.

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

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

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

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

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

  • Баримт бичгийг бөглөж, дахин бичсэн; тэр дундаа шинээр нэмэгдсэн
    бүлгүүд буфер дүүргэх тухай
    и оролтын өгөгдлийн төгсгөлийг шалгах аргуудын тухай.
    Шинэ баримт бичгийг маягтаар цуглуулсан
    нэг хуудас дэлгэрэнгүй гарын авлага
    жишээнүүдийн хамт (ижил эх сурвалжийг хуудас болон онлайн баримт бичигт оруулсан болно).
    Утсанд сайтын унших чадварыг сайжруулах оролдлого тааруухан хийгдсэн.

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

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

Энэ хувилбарыг гаргахад тусалсан бүх хүмүүст re2c хөгжүүлэгчид баярлалаа.
санаа, алдааны тайлан, засвар, ёс суртахуун гэх мэтийг ерөнхийд нь олон нийтэд хүргэх. ;]

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

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