Re2c lexer generator 1.2 kaleratzea

ospatu askatu re2c, C eta C++ lengoaietarako doako analizatzaile lexikoaren sorgailua. Gogora dezagun re2c 1993an idatzi zuela Peter Bambulis-ek analizatzaile lexikal oso azkarren sorgailu esperimental gisa, beste sorgailu batzuengandik sortutako kodearen abiaduran eta ezohiko malgu-interfazean, analizatzaileak lehendik dagoen batean erraz eta eraginkortasunez integratzea ahalbidetzen duena. kodearen oinarria. Harrezkero, proiektua komunitateak garatu du eta gramatika formalen eta egoera finituetako makinen alorreko esperimentu eta ikerketetarako plataforma izaten jarraitzen du.

Askapenerako prestaketak ia urtebete behar izan zuen. Gehienetan, beti bezala, marko teorikoa garatzen eta idazten zen
artikuluak"POSIX Submatch erauzketa eraginkorra NFAn".
Artikuluan deskribatutako algoritmoak libre2c liburutegi esperimentalean inplementatzen dira
(liburutegia eta errendimendu-probak sortzea lehenespenez desgaituta dago eta "β€”enable-libs" konfigurazio aukerak gaituta dago). Liburutegia ez da RE2 bezalako proiektuen lehiakide gisa, baizik eta berriak garatzeko ikerketa plataforma gisa.
algoritmoak (gero re2c edo beste proiektu batzuetan erabil daitezkeenak). Probak egiteko, errendimendua neurtzeko eta beste hizkuntzetarako loturak sortzeko ere komenigarria da.

Berrikuntza nagusiak re2c 1.2 bertsioan:

  • Sarrerako datuen amaiera egiaztatzeko metodo sinplifikatu berri bat gehitu da ("EOF araua"). Horretarako, β€œre2c:eof” konfigurazioa gehitu da,
    terminaleko karakterea hautatzeko aukera ematen dizu,
    eta β€œ$” arau berezi bat, lexera bada abiarazten dena
    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" sartu beharreko fitxategiaren izena den. 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-k "--input-encoding {ascii | utf8}",
    portaera aldatzeko eta β€œβˆ€x βˆƒy” gisa analizatzeko aukera ematen duena
    "2200 78 20 2203 79".

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

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

  • Flex-ekin "bateragarritasun" modua hobetu da - analisi-akats batzuk konpondu dira eta
    operadorearen lehentasun okerra kasu bakanetan.
    Historikoki, "-F --flex-suppor" 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
    buruzko kapituluak http://re2c.org/manual/manual.html#buffer-refilling Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€Π°
    ΠΈ sarrerako datuen amaiera egiaztatzeko moduei buruz.
    Dokumentazio berria formularioan jasotzen da
    orrialde bateko gida 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
    "--enable-debug" konfigurazio aukera erabiliz gaitu daiteke.

Iturria: opennet.ru

Gehitu iruzkin berria