Երկուշաբթի՝ հուլիսի 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