ఆగష్టు 2, శుక్రవారం, C మరియు C++ భాషల కోసం లెక్సికల్ ఎనలైజర్‌ల యొక్క ఉచిత జనరేటర్ అయిన re2c విడుదల చేయబడింది. Re2c 1993లో పీటర్ బాంబౌలిస్ చేత చాలా వేగవంతమైన లెక్సికల్ ఎనలైజర్‌ల యొక్క ప్రయోగాత్మక జనరేటర్‌గా వ్రాయబడింది, ఇతర జనరేటర్‌ల నుండి ఉత్పత్తి చేయబడిన కోడ్ వేగం మరియు ఎనలైజర్‌లను సులభంగా మరియు సమర్ధవంతంగా ఇప్పటికే ఉన్న కోడ్ బేస్‌లో పొందుపరచడానికి అనుమతించే అసాధారణంగా అనువైన వినియోగదారు ఇంటర్‌ఫేస్ ద్వారా వేరు చేయబడింది. అప్పటి నుండి, ప్రాజెక్ట్ కమ్యూనిటీచే అభివృద్ధి చేయబడింది మరియు అధికారిక వ్యాకరణాలు మరియు పరిమిత రాష్ట్ర యంత్రాల రంగంలో ప్రయోగాలు మరియు పరిశోధనలకు వేదికగా కొనసాగుతోంది.

వెర్షన్ 1.2లో ప్రధాన ఆవిష్కరణలు:

  • ఇన్‌పుట్ డేటా ముగింపు కోసం తనిఖీ చేయడానికి కొత్త (సరళీకృత) మార్గం జోడించబడింది
    (ఇంగ్లీష్ "EOF నియమం").
    దీని కోసం, re2c:eof కాన్ఫిగరేషన్ జోడించబడింది,
    టెర్మినల్ అక్షరాన్ని ఎంచుకోవడానికి మిమ్మల్ని అనుమతిస్తుంది,
    మరియు lexer ఉంటే కాల్చే ఒక ప్రత్యేక $ నియమం
    ఇన్‌పుట్ డేటా ముగింపుకు విజయవంతంగా చేరుకుంది.
    చారిత్రాత్మకంగా, re2c అనేక ధృవీకరణ పద్ధతుల ఎంపికను అందిస్తుంది
    పరిమితి, సామర్థ్యం మరియు సరళతలో మారుతున్న ఇన్‌పుట్‌ల ముగింపు
    అప్లికేషన్లు. కొత్త పద్ధతిని వ్రాయడం కోడ్‌ని సులభతరం చేయడానికి రూపొందించబడింది
    ప్రభావవంతంగా మరియు విస్తృతంగా వర్తించే సమయంలో. పాత మార్గాలు
    ఇప్పటికీ పని చేస్తుంది మరియు కొన్ని సందర్భాల్లో ప్రాధాన్యత ఇవ్వబడుతుంది.

  • ఆదేశాన్ని ఉపయోగించి బాహ్య ఫైల్‌లను చేర్చగల సామర్థ్యం జోడించబడింది
    /*!include:re2c "file.re" */ ఇక్కడ file.re
    ఇది చేర్చబడిన ఫైల్ పేరు. Re2c ఫైల్ డైరెక్టరీతో సహా ఫైల్‌ల కోసం చూస్తుంది,
    అలాగే -I ఎంపికను ఉపయోగించి పేర్కొన్న మార్గాల జాబితాలో.
    చేర్చబడిన ఫైల్‌లు ఇతర ఫైల్‌లను కలిగి ఉండవచ్చు.
    Re2c చేర్చబడిన/డైరెక్టరీలో "ప్రామాణిక" ఫైల్‌లను అందిస్తుంది
    ప్రాజెక్ట్ - ఉపయోగకరమైన నిర్వచనాలు అక్కడ పేరుకుపోతాయని భావిస్తున్నారు
    సాధారణ వ్యక్తీకరణలు, ప్రామాణిక లైబ్రరీ వంటివి.
    ఇప్పటివరకు, కార్మికుల అభ్యర్థన మేరకు, యూనికోడ్ కేటగిరీల నిర్వచనాలతో ఒక ఫైల్ జోడించబడింది.

  • హెడర్ ఫైల్‌లను ఏకపక్షంగా రూపొందించే సామర్థ్యం జోడించబడింది
    కంటెంట్ -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 ఎంపికను అందిస్తుంది ,
    ఇది ప్రవర్తనను మార్చడానికి మరియు "∀x ∃y"ని అన్వయించడానికి మిమ్మల్ని అనుమతిస్తుంది
    2200 78 20 2203 79.

  • Re2c ఇప్పుడు -r --reuse మోడ్‌లో సాధారణ re2c బ్లాక్‌ల వినియోగాన్ని అనుమతిస్తుంది.
    ఇన్‌పుట్ ఫైల్‌లో అనేక బ్లాక్‌లు మరియు వాటిలో కొన్ని మాత్రమే ఉంటే ఇది సౌకర్యవంతంగా ఉంటుంది
    తిరిగి ఉపయోగించాల్సిన అవసరం ఉంది.

  • ఇప్పుడు మీరు హెచ్చరికలు మరియు దోష సందేశాల ఆకృతిని సెట్ చేయవచ్చు
    కొత్త --location-format ఎంపికను ఉపయోగించి . GNU ఫార్మాట్ ప్రదర్శించబడుతుంది
    ఫైల్ పేరు:line:column:, మరియు MSVC ఫార్మాట్ ఫైల్ పేరు(లైన్, నిలువు వరుస).
    ఈ ఫీచర్ IDE ప్రేమికులకు ఉపయోగకరంగా ఉండవచ్చు.
    ఒక --verbose ఎంపిక కూడా జోడించబడింది, ఇది విజయవంతమైతే చిన్న విజయ సందేశాన్ని ముద్రిస్తుంది.

  • ఫ్లెక్స్‌తో “అనుకూలత” మోడ్ మెరుగుపరచబడింది - కొన్ని పార్సింగ్ లోపాలు పరిష్కరించబడ్డాయి మరియు
    అరుదైన సందర్భాల్లో తప్పు ఆపరేటర్ ప్రాధాన్యత.
    చారిత్రాత్మకంగా, -F --flex-support ఎంపిక మిమ్మల్ని కోడ్ వ్రాయడానికి అనుమతించింది
    ఫ్లెక్స్ స్టైల్ మరియు re2c స్టైల్‌లో మిళితం చేయబడింది, ఇది పార్సింగ్‌ను కొద్దిగా కష్టతరం చేస్తుంది.
    కొత్త కోడ్‌లో ఫ్లెక్స్ అనుకూలత మోడ్ చాలా అరుదుగా ఉపయోగించబడుతుంది,
    కానీ re2c వెనుకకు అనుకూలత కోసం దీనికి మద్దతునిస్తూనే ఉంది.

  • క్యారెక్టర్ క్లాస్ తీసివేత ఆపరేటర్ / ఇప్పుడు వర్తిస్తుంది
    ఎన్‌కోడింగ్‌ను విస్తరించే ముందు, ఇది ఎక్కువ సంఖ్యలో సందర్భాలలో ఉపయోగించడానికి అనుమతిస్తుంది,
    వేరియబుల్ క్యారెక్టర్ లెంగ్త్ ఎన్‌కోడింగ్ ఉపయోగించబడితే (ఉదాహరణకు UTF8).

  • అవుట్‌పుట్ ఫైల్ ఇప్పుడు పరమాణుపరంగా సృష్టించబడింది: re2c ముందుగా తాత్కాలిక ఫైల్‌ను సృష్టిస్తుంది
    మరియు దానిలో ఫలితాన్ని వ్రాస్తుంది, ఆపై తాత్కాలిక ఫైల్‌ని అవుట్‌పుట్‌కి పేరు మారుస్తుంది
    ఒక ఆపరేషన్.

  • డాక్యుమెంటేషన్ పూర్తయింది మరియు తిరిగి వ్రాయబడింది; ముఖ్యంగా, కొత్తవి జోడించబడ్డాయి
    అధ్యాయాలు బఫర్ నింపడం గురించి
    и ఇన్‌పుట్ డేటా ముగింపు కోసం తనిఖీ చేసే మార్గాల గురించి.
    కొత్త డాక్యుమెంటేషన్ రూపంలో సేకరించబడుతుంది
    ఒక సమగ్ర ఒక పేజీ మాన్యువల్
    ఉదాహరణలతో (అదే మూలాధారాలు మ్యాన్‌పేజ్‌లో మరియు ఆన్‌లైన్ డాక్యుమెంటేషన్‌లో అందించబడతాయి).
    ఫోన్‌లలో సైట్ రీడబిలిటీని మెరుగుపరచడానికి పేలవమైన ప్రయత్నాలు జరిగాయి.

  • డెవలపర్ల దృక్కోణం నుండి, re2c మరింత పూర్తి ఉపవ్యవస్థను పొందింది
    డీబగ్గింగ్ డీబగ్గింగ్ కోడ్ ఇప్పుడు విడుదల బిల్డ్‌లలో నిలిపివేయబడింది మరియు
    కాన్ఫిగర్ ఎంపికను ఉపయోగించి ప్రారంభించవచ్చు --enable-debug.

ఈ విడుదలకు చాలా సమయం పట్టింది - దాదాపు సంవత్సరం మొత్తం.
ఎక్కువ సమయం, ఎప్పటిలాగే, సైద్ధాంతిక ఫ్రేమ్‌వర్క్‌ను అభివృద్ధి చేయడం మరియు వ్రాయడం కోసం ఖర్చు చేయబడింది
వ్యాసాలు "NFAపై సమర్థవంతమైన POSIX సబ్‌మ్యాచ్ ఎక్స్‌ట్రాక్షన్".
వ్యాసంలో వివరించిన అల్గోరిథంలు ప్రయోగాత్మక లైబ్రరీ libre2cలో అమలు చేయబడ్డాయి
(లైబ్రరీ మరియు బెంచ్‌మార్క్‌లను నిర్మించడం డిఫాల్ట్‌గా నిలిపివేయబడుతుంది మరియు కాన్ఫిగర్ ఎంపిక ద్వారా ప్రారంభించబడుతుంది
--ఎనేబుల్-లిబ్స్). లైబ్రరీ ఇప్పటికే ఉన్నదానికి పోటీదారుగా భావించబడలేదు
RE2 వంటి ప్రాజెక్టులు, కానీ కొత్త అభివృద్ధి కోసం పరిశోధన వేదికగా
అల్గారిథమ్‌లు (దీనిని re2cలో లేదా ఇతర ప్రాజెక్ట్‌లలో ఉపయోగించవచ్చు).
పరీక్ష, బెంచ్‌మార్క్‌లు మరియు ఇతర భాషలకు బైండింగ్‌లను సృష్టించడం వంటి దృక్కోణం నుండి కూడా ఇది సౌకర్యవంతంగా ఉంటుంది.

ఈ విడుదల జరగడానికి సహకరించిన ప్రతి ఒక్కరికీ re2c డెవలపర్‌ల నుండి ధన్యవాదాలు,
మరియు ఆలోచనలు, బగ్ నివేదికలు, పాచెస్, నైతికత మొదలైన వాటి కోసం సాధారణంగా సమాజానికి. ;]

మూలం: linux.org.ru

ఒక వ్యాఖ్యను జోడించండి