re2c 1.2

Ostiralean, abuztuaren 2an, re2c kaleratu zen, C eta C++ lengoaietarako analizatzaile lexikalen sorgailu librea. Oroigarri gisa, re2c 1993an idatzi zuen Peter Bamboulis-ek analizatzaile lexikal oso bizkorren sortzaile esperimental gisa, sortutako kodearen abiaduragatik eta analizatzaileak erraz eta eraginkortasunez txertatzeko aukera ematen duen erabiltzaile-interfaze ezohiko malguagatik bereizten dena. dagoen kode-oinarria. Harrezkero, proiektua komunitateak garatu du eta gramatika formalen eta egoera finituetako makinen alorreko esperimentu eta ikerketetarako plataforma izaten jarraitzen du.

Berrikuntza nagusiak 1.2 bertsioan:

  • Sarrerako datuen amaiera egiaztatzeko modu berri bat (sinplifikatua) gehitu da
    (Ingelesez β€œEOF rule”).
    Horretarako, re2c:eof konfigurazioa gehitu da,
    terminaleko karakterea hautatzeko aukera ematen dizu,
    eta lexera bada abiatzen duen $ arau berezi bat
    behar bezala iritsi da sarrerako datuen amaierara.
    Historikoki, re2c-ek hainbat egiaztapen-metodo aukeratzen ditu
    Muga, eraginkortasuna eta sinpletasuna duten sarreren amaiera
    aplikazioak. Metodo berria kodea idaztea errazteko diseinatuta dago, berriz
    eraginkorra eta oso aplikagarria izaten jarraituz. Modu zaharrak
    oraindik funtzionatzen du eta kasu batzuetan hobetsi daiteke.

  • Zuzentarau bat erabiliz kanpoko fitxategiak sartzeko gaitasuna gehitu da
    /*!include:re2c "fitxategia.re" */ non fitxategia.re
    hau da include fitxategiaren izena. Re2c-ek fitxategien direktorio barnean fitxategiak bilatzen ditu,
    baita -I aukera erabiliz zehaztutako bideen zerrendan ere.
    Sartutako fitxategiek beste fitxategi batzuk izan ditzakete.
    Re2c-ek fitxategi "estandarrak" eskaintzen ditu include/ direktorioan
    proiektua - definizio erabilgarriak bertan pilatuko direla espero da
    adierazpen erregularrak, liburutegi estandarraren antzeko zerbait.
    Orain arte, langileek eskatuta, Unicode kategorien definizioak dituen fitxategi bat gehitu da.

  • Goiburuko fitxategiak arbitrarioarekin sortzeko gaitasuna gehitu da
    edukia -t --type-header aukerak erabiliz (edo egokia
    konfigurazioak) eta zuzentarau berriak /*!header:re2c:on*/ eta
    /*!header:re2c:off*/. Hau erabilgarria izan daiteke kasuetan
    re2c-ek aldagaien, egituren eta makroen definizioak sortu behar dituenean,
    beste itzulpen-unitate batzuetan erabiltzen da.

  • Re2c-ek orain UTF8 literalak eta karaktere klaseak ulertzen ditu adierazpen erregularretan.
    Lehenespenez, re2c-ek "βˆ€x βˆƒy" bezalako esamoldeak analizatzen ditu.
    1 biteko ASCII karaktereen sekuentzia e2 88 80 78 20 e2 88 83 79
    (hex kodeak), eta erabiltzaileek Unicode karaktereei eskuz ihes egin behar diete:
    "u2200x u2203y". Hau oso deserosoa eta ezustekoa da askorentzat
    erabiltzaileak (etengabeko akatsen berri ematen duten bezala). Beraz, orain
    re2c --input-encoding aukera bat eskaintzen du ,
    horrek portaera aldatzeko eta "βˆ€x βˆƒy" gisa analizatzeko aukera ematen du
    2200 78 20 2203 79.

  • Re2c-ek orain re2c bloke arruntak erabiltzeko aukera ematen du -r --reuse moduan.
    Hau komenigarria da sarrerako fitxategiak bloke asko eta horietako batzuk bakarrik baditu
    berrerabili behar da.

  • Orain abisu eta errore-mezuen formatua ezar dezakezu
    --location-format aukera berria erabiliz . GNU formatua bistaratzen da
    fitxategi-izena:lerroa:zutabea: eta MSVC formatua fitxategi-izen gisa (lerroa, zutabea).
    Ezaugarri hau erabilgarria izan daiteke IDE zaleentzat.
    --verbose aukera bat ere gehitu da, arrakasta izanez gero garaipen mezu labur bat inprimatzen duena.

  • Flex-ekin "bateragarritasun" modua hobetu da - analisi-akats batzuk konpondu dira eta
    operadorearen lehentasun okerra kasu bakanetan.
    Historikoki, -F --flex-support aukerak kodea idazteko aukera ematen zuen
    flex estiloan eta re2c estiloan nahasten dira, eta horrek analisia apur bat zaila egiten du.
    Flex bateragarritasun modua oso gutxitan erabiltzen da kode berrietan,
    baina re2c-k atzerako bateragarritasuna onartzen jarraitzen du.

  • Karaktere klaseen kenketa operadorea / aplikatzen da orain
    kodeketa zabaldu baino lehen, eta horri esker, kasu kopuru handiagoan erabiltzeko,
    karaktere luzera aldakorreko kodeketa erabiltzen bada (adibidez, UTF8).

  • Irteerako fitxategia atomikoki sortzen da orain: re2c-k aldi baterako fitxategi bat sortzen du lehenik
    eta emaitza bertan idazten du, eta gero aldi baterako fitxategia irteerara aldatzen du
    eragiketa bat.

  • Dokumentazioa osatu eta berridatzi zen; bereziki, berriak gehitu ziren
    kapituluak buffer betetzeari buruz
    ΠΈ sarrerako datuen amaiera egiaztatzeko moduei buruz.
    Dokumentazio berria formularioan jasotzen da
    orrialde bateko eskuliburu zabala
    adibideekin (iturri berberak man-orrian eta sareko dokumentazioan errendatzen dira).
    Telefonoetan webgunearen irakurgarritasuna hobetzeko saiakera eskasak egin dira.

  • Garatzaileen ikuspuntutik, re2c-ek azpisistema osatuagoa eskuratu du
    arazketa Arazketa-kodea desgaituta dago bertsio-koniketetan eta
    konfiguratu aukera erabiliz gaitu daiteke --enable-debug.

Argitalpen honek denbora luzea behar izan zuen, ia urte osoa.
Gehienetan, beti bezala, marko teorikoa garatzen eta idazten zen
Artikulua "POSIX azpimatchen erauzketa eraginkorra NFAn".
Artikuluan deskribatutako algoritmoak libre2c liburutegi esperimentalean inplementatzen dira
(liburutegia eta erreferentziak sortzea lehenespenez desgaituta dago eta konfigurazio aukerak gaituta dago
--enable-libs). Liburutegia ez da existitzen denaren lehiakide gisa planteatzen
RE2 bezalako proiektuak, baina berrien garapenerako ikerketa plataforma gisa
algoritmoak (gero re2c edo beste proiektu batzuetan erabil daitezkeenak).
Proba, benchmark eta beste hizkuntzetarako loturak sortzearen ikuspegitik ere komenigarria da.

Eskerrik asko re2c garatzaileen partetik kaleratze hau lortzen lagundu duten guztiei,
eta komunitateari, oro har, ideiak, akatsen txostenak, adabakiak, morala, etab. ;]

Iturria: linux.org.ru

Gehitu iruzkin berria