Utjefte fan re2c lexer generator 1.2

barde frijlitte re2c, in fergese leksikale analysatorgenerator foar C- en C++-talen. Tink derom dat re2c waard skreaun yn 1993 troch Peter Bambulis as in eksperimintele generator fan heul rappe leksikale analysatoren, ferskillend fan oare generators yn 'e snelheid fan' e generearre koade en in ûngewoan fleksibele brûkersynterface wêrtroch analysators maklik en effisjint kinne wurde yntegreare yn in besteande koade. basis. 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.

De tarieding foar de útjefte duorre hast in hiel jier. De measte tiid, lykas altyd, waard bestege oan it ûntwikkeljen fan in teoretysk ramt en skriuwen
artikels"Effisjinte POSIX Submatch-ekstraksje op NFA".
De algoritmen beskreaun yn it artikel wurde ymplementearre yn 'e eksperimintele bibleteek libre2c
(it bouwen fan de bibleteek en prestaasjestests is standert útskeakele en is ynskeakele troch de konfiguraasje-opsje "-enable-libs"). De biblioteek is net bedoeld as konkurrint foar besteande projekten lykas RE2, mar as ûndersyksplatfoarm 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, mjitten fan prestaasjes en it meitsjen fan binings oan oare talen.

Wichtichste ynnovaasjes yn ferzje re2c 1.2:

  • In nije ferienfâldige metoade tafoege foar it kontrolearjen fan it ein fan ynfiergegevens ("EOF-regel"). Hjirfoar is de "re2c:eof" konfiguraasje tafoege,
    kinne jo it terminalkarakter selektearje,
    en in spesjale regel "$", dy't wurdt aktivearre 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êrby't "file.re" de namme is fan it bestân dat opnommen wurde moat. Re2c siket nei bestannen yn 'e ynklusyf triemtafel,
    lykas yn 'e list mei paden oantsjutte mei de opsje "-I".
    Ynbegrepen bestannen kinne oare bestannen befetsje.
    Re2c leveret "standert" bestannen yn 'e map "omfetsje/".
    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 biedt de opsje "--ynput-kodearring {ascii | utf8}",
    wêrtroch jo it gedrach kinne feroarje en "∀x ∃y" as parse
    "2200 78 20 2203 79."

  • Re2c lit no gewoane re2c-blokken brûke 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 "--lokaasje-formaat {gnu | msvc}". GNU-formaat wurdt werjûn
    as "bestânnamme:rigel:kolom:", en it MSVC-formaat as "bestânnamme(rigel,kolom)".
    Dizze funksje kin nuttich wêze foar IDE-leafhawwers.
    In opsje "--verbose" is ek tafoege, dy't in koart oerwinningsberjocht toant as suksesfol.

  • De modus "kompatibiliteit" mei flex is ferbettere - guon parseerfouten binne reparearre en
    ferkearde operator foarrang yn seldsume gefallen.
    Histoarysk koe de opsje "-F --flex-supor" 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 subtraksjeoperator "/" 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 http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и oer manieren om te kontrolearjen op it ein fan ynfiergegevens.
    De nije dokumintaasje wurdt sammele yn it formulier
    in wiidweidige gids 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 konfiguraasjeopsje "--enable-debug".

Boarne: opennet.ru

Add a comment