տեղի ունեցավ արձակել re2c, անվճար լեքսիկական անալիզատոր գեներատոր C և C++ լեզուների համար։ Հիշենք, որ re2c-ը գրվել է 1993 թվականին Պիտեր Բամբուլիսի կողմից՝ որպես շատ արագ լեքսիկական անալիզատորների փորձարարական գեներատոր, որը տարբերվում է այլ գեներատորներից գեներացված կոդի արագությամբ և անսովոր ճկուն ինտերֆեյսով, որը թույլ է տալիս անալիզատորներին հեշտությամբ և արդյունավետ կերպով ինտեգրվել գոյություն ունեցող համակարգին։ ծածկագրի հիմքը: Այդ ժամանակից ի վեր նախագիծը մշակվել է համայնքի կողմից և շարունակում է լինել փորձերի և հետազոտությունների հարթակ ֆորմալ քերականության և վերջավոր վիճակի մեքենաների ոլորտում:
Թողարկման նախապատրաստումը տևել է գրեթե մեկ տարի։ Ժամանակի մեծ մասը, ինչպես միշտ, ծախսվել է տեսական շրջանակի մշակման և գրելու վրա
հոդվածներ»Արդյունավետ POSIX ենթահամապատասխանի արդյունահանում NFA-ում»:
Հոդվածում նկարագրված ալգորիթմները ներդրված են 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*/» և
«/*!header:re2c:off*/»: Սա կարող է օգտակար լինել այն դեպքերում, երբ
երբ 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}»: Ցուցադրվում է GNU ձևաչափը
որպես «filename:line:column:», իսկ MSVC ձևաչափը որպես «filename(line,column)»:
Այս հատկությունը կարող է օգտակար լինել IDE-ի սիրահարների համար:
Ավելացվել է նաև «--verbose» տարբերակը, որը հաջողության դեպքում ցուցադրում է հաղթանակի կարճ հաղորդագրություն:
Բարելավվել է «համատեղելիության» ռեժիմը flex-ի հետ. որոշ վերլուծական սխալներ շտկվել են և
Օպերատորի սխալ գերակայությունը հազվադեպ դեպքերում:
Պատմականորեն «-F --flex-suppor» տարբերակը թույլ էր տալիս գրել կոդը
խառնված է flex ոճով և re2c ոճով, ինչը մի փոքր դժվարացնում է վերլուծությունը:
Flex համատեղելիության ռեժիմը հազվադեպ է օգտագործվում նոր կոդում,
բայց re2c-ը շարունակում է աջակցել այն հետընթաց համատեղելիության համար:
Նիշերի դասի հանման օպերատորը «/» այժմ կիրառվում է
նախքան կոդավորումը ընդլայնելը, ինչը թույլ է տալիս այն օգտագործել ավելի մեծ թվով դեպքերում,
եթե օգտագործվում է փոփոխական նիշերի երկարության կոդավորում (օրինակ՝ UTF8):
Ելքային ֆայլն այժմ ստեղծվում է ատոմային եղանակով. re2c-ը սկզբում ստեղծում է ժամանակավոր ֆայլ
և արդյունքը գրում է դրա մեջ, այնուհետև վերանվանում է ժամանակավոր ֆայլը ելքի
մեկ վիրահատություն.
Մշակողների տեսանկյունից re2c-ն ավելի ամբողջական ենթահամակարգ է ձեռք բերել
վրիպազերծում Վրիպազերծման կոդը այժմ անջատված է թողարկումների և
կարելի է միացնել՝ օգտագործելով «--enable-debug» կազմաձևման տարբերակը: