re2c 1.2

Op freed 2 augustus waard re2c, in fergese generator fan leksikale analyzers foar de C- en C++-talen, frijlitten. Re2c waard yn 1993 skreaun troch Peter Bamboulis as in eksperimintele generator fan heul rappe leksikale analysatoren, ûnderskieden fan oare generators troch de snelheid fan 'e oanmakke koade en in ûngewoan fleksibele brûkersynterface wêrmei't analysatoren maklik en effisjint wurde ynbêde yn in besteande koadebasis. Sûnt dy tiid is it projekt ûntwikkele troch de mienskip en bliuwt in platfoarm foar eksperiminten en ûndersyk op it mêd fan formele grammatika's en finite state masines.

Wichtichste ynnovaasjes yn ferzje 1.2:

  • In nije (simpele) manier tafoege om te kontrolearjen op it ein fan 'e ynfiergegevens
    (Ingelsk "EOF-regel").
    Hjirfoar is de re2c:eof-konfiguraasje tafoege,
    kinne jo it terminalkarakter selektearje,
    en in spesjale $ regel dy't fjoer as de lexer
    mei súkses berikt it ein fan de ynfier gegevens.
    Histoarysk jout re2c in kar fan ferskate ferifikaasje metoaden foar
    ein fan yngongen fariearjend yn beheining, effisjinsje en ienfâld
    oanfraach. De nije metoade is ûntwurpen om te ferienfâldigjen skriuwen koade, wylst
    wylst se effektyf en breed tapaslik bliuwe. Alde manieren
    noch wurkje en kin yn guon gefallen de foarkar.

  • De mooglikheid tafoege om eksterne bestannen op te nimmen mei in rjochtline
    /*!include:re2c "file.re" */ wêr file.re
    dit is de namme fan it include-bestân. Re2c siket nei bestannen yn 'e ynklusyf triemtafel,
    lykas ek yn 'e list mei paden oantsjutte mei de -I opsje.
    Ynbegrepen bestannen kinne oare bestannen befetsje.
    Re2c leveret "standert" bestannen yn 'e map include/
    projekt - it wurdt ferwachte dat nuttige definysjes dêr sille sammelje
    reguliere útdrukkingen, soksawat as de standert bibleteek.
    Oant no is, op fersyk fan arbeiders, ien bestân mei definysjes fan Unicode-kategoryen tafoege.

  • De mooglikheid tafoege om koptekstbestannen te generearjen mei willekeurige
    ynhâld mei de -t --type-header-opsjes (of passend
    konfiguraasjes) en nije rjochtlinen /*!header:re2c:on*/ en
    /*!header:re2c:út*/. Dit kin nuttich wêze yn gefallen wêr't
    as re2c definysjes fan fariabelen, struktueren en makro's moat generearje,
    brûkt yn oare oersetting ienheden.

  • Re2c begrypt no UTF8-literalen en karakterklassen yn reguliere útdrukkingen.
    Standert parses re2c útdrukkingen lykas "∀x ∃y" as.
    folchoarder fan 1-bit ASCII-tekens e2 88 80 78 20 e2 88 83 79
    (hex-koades), en brûkers moatte de Unicode-tekens mei de hân ûntkomme:
    "u2200x u2203y". Dit is heul ûngemaklik en ûnferwachts foar in protte
    brûkers (lykas bliken docht út konstante bugrapporten). No dus
    re2c jout in --input-kodearring opsje ,
    wêrtroch jo it gedrach kinne feroarje en "∀x ∃y" as
    2200 78 20 2203 79.

  • Re2c lit no it gebrûk fan reguliere re2c-blokken ta yn -r --reuse-modus.
    Dit is handich as it ynfierbestân in protte blokken befettet en mar guon fan harren
    moat opnij brûkt wurde.

  • No kinne jo it formaat fan warskôgings en flaterberjochten ynstelle
    mei de nije opsje --location-format . GNU-formaat wurdt werjûn
    as bestânsnamme: line: kolom:, en it MSVC-formaat as bestânsnamme (rigel, kolom).
    Dizze funksje kin nuttich wêze foar IDE-leafhawwers.
    In --verbose opsje is ek tafoege, dy't in koart oerwinningsberjocht printsje as suksesfol.

  • De "kompatibiliteit" modus mei flex is ferbettere - guon parsing flaters binne reparearre en
    ferkearde operator foarrang yn seldsume gefallen.
    Histoarysk koe de -F --flex-stipe opsje jo koade skriuwe
    mingd yn flex styl en re2c styl, dat makket parsing in bytsje lestich.
    Flex-kompatibiliteitsmodus wurdt selden brûkt yn nije koade,
    mar re2c bliuwt te stypjen it foar efterút komptabiliteit.

  • De karakterklasse subtraction operator / is no fan tapassing
    foardat de kodearring útwreide, wêrtroch it yn in grutter oantal gefallen kin wurde brûkt,
    as in fariabele karakter lingte kodearring wurdt brûkt (bygelyks UTF8).

  • De útfiertriem is no atomysk oanmakke: re2c makket earst in tydlike triem
    en skriuwt it resultaat deryn, en omneamt dan de tydlike triem nei de útfier
    ien operaasje.

  • De dokumintaasje waard foltôge en opnij skreaun; der kamen benammen nije by
    haadstikken oer it ynfoljen fan de buffer
    и oer manieren om te kontrolearjen op it ein fan ynfiergegevens.
    De nije dokumintaasje wurdt sammele yn it formulier
    in wiidweidige hânlieding fan ien side
    mei foarbylden (deselde boarnen wurde werjûn yn 'e manpage en yn' e online dokumintaasje).
    Der binne min besocht om de lêsberens fan de side op telefoans te ferbetterjen.

  • Fanút it eachpunt fan 'e ûntwikkelders hat re2c in folsleiner subsysteem krigen
    debuggen Debuggen koade is no útskeakele yn release builds en
    kin ynskeakele wurde mei de konfiguraasje-opsje --enable-debug.

Dizze útjefte duorre lang - hast in hiel jier.
De measte tiid, lykas altyd, waard bestege oan it ûntwikkeljen fan in teoretysk ramt en skriuwen
artikels "Effektive POSIX-submatch-ekstraksje op NFA".
De algoritmen beskreaun yn it artikel wurde ymplementearre yn 'e eksperimintele bibleteek libre2c
(it bouwen fan de bibleteek en benchmarks is standert útskeakele en is ynskeakele troch de konfiguraasje-opsje
--enable-libs). De biblioteek is net opfette as in konkurrint foar besteande
projekten lykas RE2, mar as in ûndersyk platfoarm foar de ûntwikkeling fan nije
algoritmen (dy't dan brûkt wurde kinne yn re2c of yn oare projekten).
It is ek handich út it eachpunt fan testen, benchmarks en it meitsjen fan binings oan oare talen.

Betanke fan 'e re2c-ûntwikkelders oan elkenien dy't dizze release holpen hawwe,
en nei de mienskip yn it algemien foar ideeën, bugrapporten, patches, moraal, ensfh. ;]

Boarne: linux.org.ru

Add a comment