Երկուշաբթի՝ հուլիսի 20-ին, թողարկվեց re2c-ը՝ արագ բառապաշար անալիզատորի գեներատորը:
Խոշոր փոփոխություններ.

  • Ավելացվեց Go լեզվի աջակցություն
    (միացված է կամ --lang go տարբերակով re2c-ի համար, կամ որպես ինքնուրույն re2go ծրագրի):
    C-ի և Go-ի փաստաթղթերը ստեղծվում են նույն տեքստից, բայց տարբեր
    կոդի օրինակներ։ Re2c-ում կոդերի ստեղծման ենթահամակարգն ամբողջությամբ վերանախագծվել է, ինչը
    պետք է հեշտացնի ապագայում նոր լեզուների աջակցությունը:

  • Ավելացվեց այլընտրանքային կառուցման համակարգ CMake-ում (շնորհակալություն ligfx).
    Re2c-ը CMake-ի թարգմանելու փորձեր արվել են երկար ժամանակ, բայց մինչ ligfx-ը ոչ ոք
    առաջարկել է ամբողջական լուծում.
    Ավտոգործիքների վրա հին կառուցման համակարգը շարունակում է աջակցվել և օգտագործվել,
    և տեսանելի ապագայում դրանից հրաժարվելու պլաններ չկան (մասամբ՝ չստեղծելու համար
    խնդիրներ բաշխման մշակողների համար, մասամբ այն պատճառով, որ հին կառուցման համակարգը
    ավելի կայուն և հակիրճ, քան նորը):
    Երկու համակարգերն էլ հավասարապես շարունակաբար փորձարկվում են՝ օգտագործելով Travis CI:

  • Օգտագործելիս ինտերֆեյսի կոդը կոնֆիգուրացիաներում սահմանելու հնարավորություն է ավելացվել
    ընդհանուր API (ընդհանուր API): Նախկինում API-ների մեծ մասը պետք է նշվեր ձևի մեջ
    գործառույթներ կամ ֆունկցիաների մակրոներ: Այժմ դրանք կարող են դրվել կամայական ձևով
    տողեր՝ անվանված ձևանմուշի պարամետրերով՝ @@{name} կամ պարզապես @@ (եթե
    կա միայն մեկ պարամետր և չկա ոչ մի երկիմաստություն): API ոճը կարգավորելի է
    re2c:api:style (գործառույթների արժեքը սահմանում է ֆունկցիոնալ ոճը, մինչդեռ ազատ ձևի արժեքը կամայական է):

  • -c, --start-conditions տարբերակի բարելավված աշխատանքը, որը թույլ է տալիս միավորել մի քանիսը
    փոխկապակցված lexers մեկ re2c բլոկում: Այժմ դուք կարող եք օգտագործել
    սովորական բլոկները հավասար են պայմանականների հետ և սահմանել մի քանի անկապ պայմանականներ
    բլոկներ մեկ ֆայլում:
    Բարելավված -r, --reuse ընտրանքներ (կոդի վերաօգտագործում մեկ բլոկի
    այլ բլոկներում) -c, --start-conditions և -f, --storable-state տարբերակների հետ համատեղ
    (statful lexer, որը կարող է ընդհատվել կամայական վայրում
    և շարունակել կատարումը ավելի ուշ):

  • Շտկվել է նոր ավելացված ալգորիթմի սխալ՝ մուտքային տվյալների վերջը մշակելու համար
    (EOF կանոն), որը հազվադեպ դեպքերում հանգեցրել է սխալ մշակման
    համընկնման կանոններ.

  • Պարզեցված bootstrap գործընթացը: Նախկինում build համակարգը փորձել է դինամիկորեն գտնել արդեն
    կառուցել է re2c, որը կարող է օգտագործվել ինքն իրեն վերակառուցելու համար:
    Սա հանգեցրեց սխալ կախվածությունների (քանի որ կախվածության գրաֆիկը պարզվեց
    դինամիկ, ինչը շինարարական համակարգերի մեծամասնությանը դուր չի գալիս):
    Այժմ, որպեսզի վերակառուցվեն lexers, դա պահանջվում է հստակ
    կարգավորեք կառուցման համակարգը և սահմանեք RE2C_FOR_BUILD փոփոխականը:

Շնորհակալություն բոլորին, ովքեր իրենց ներդրումն ունեցան այս թողարկման համար:

Source: linux.org.ru

Добавить комментарий