{"id":36759,"date":"2019-10-31T22:13:39","date_gmt":"2019-10-31T19:13:39","guid":{"rendered":"https:\/\/prohoster.info\/blog\/re2c-1-2\/"},"modified":"2019-10-31T22:13:39","modified_gmt":"2019-10-31T19:13:39","slug":"re2c-1-2","status":"publish","type":"post","link":"https:\/\/prohoster.info\/nl\/blog\/news\/re2c-1-2","title":{"rendered":"re2c 1.2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Op vrijdag 2 augustus is de release van re2c - een gratis generator van lexicale analysatoren voor de programmeertalen C en C++. Ter herinnering, re2c werd in 1993 geschreven door Peter Bumbulis als een experimentele generator van zeer snelle lexicale analysatoren, die zich onderscheidt van andere generators door de snelheid van de gegenereerde code en een ongewoon flexibel gebruikersinterface, dat het gemakkelijk en effici\u00ebnt maakt om analysatoren in een bestaande codebase te integreren. Sindsdien wordt het project ontwikkeld door de gemeenschap en blijft het een platform voor experimenten en onderzoek op het gebied van formele grammatica's en eindige automaten.<\/p>\n<p>Belangrijkste vernieuwingen in versie 1.2:<\/p>\n<ul>\n<li>\n<p>Een nieuwe (vereenvoudigde) methode voor het controleren op het einde van de invoer is toegevoegd.<br \/>\n(Eng. \u00abEOF-rule\u00bb).<br \/>\nHiervoor is de configuratie re2c:eof toegevoegd,<br \/>\ndie het mogelijk maakt om het terminale teken te kiezen,<br \/>\nen een speciale regel $ die wordt geactiveerd als de lexer<br \/>\nmet succes het einde van de invoergegevens heeft bereikt.<br \/>\nHistorisch gezien biedt re2c verschillende manieren om te controleren op<br \/>\nhet einde van de invoergegevens, vari\u00ebrend in beperkingen, effici\u00ebntie en eenvoud<br \/>\nvan toepassing. De nieuwe manier is bedoeld om het schrijven van code te vereenvoudigen, terwijl het<br \/>\neffici\u00ebnt en breed toepasbaar blijft. De oude manieren<br \/>\nwerken nog steeds en kunnen in sommige gevallen de voorkeur genieten.<\/p>\n<\/li>\n<li>\n<p>Er is een mogelijkheid toegevoegd om externe bestanden in te voegen met behulp van de directive<br \/>\n\/*!include:re2c &quot;file.re&quot; *\/, \u0433\u0434\u0435 file.re<br \/>\nde naam van het inbegrepen bestand is. Re2c zoekt naar bestanden in de directory van het inbegrepen bestand,<br \/>\nmaar ook in de lijst met paden die zijn opgegeven met de optie -I.<br \/>\nIngevoegde bestanden kunnen andere bestanden insluiten.<br \/>\nRe2c biedt \u00abstandaard\u00bb bestanden in de directory include\/<br \/>\nvan het project - het is de bedoeling dat er nuttige definities worden verzameld<br \/>\nvan reguliere expressies, iets in de geest van een standaard bibliotheek.<br \/>\nTot nu toe is er op verzoek van gebruikers een bestand toegevoegd met definities voor Unicode-categorie\u00ebn.<\/p>\n<\/li>\n<li>\n<p>Er is nu een mogelijkheid toegevoegd om headerbestanden met willekeurige<br \/>\nmet behulp van de opties -t \u2014type-header (of de bijbehorende<br \/>\nconfiguraties) en nieuwe direttieven \/*!header:re2c:on*\/ en<br \/>\n\/*!header:re2c:off*\/. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u044f\u0445,<br \/>\nre2c definities van variabelen, structuren en macro's moet genereren,<br \/>\ndie in andere vertaal eenheden worden gebruikt.<\/p>\n<\/li>\n<li>\n<p>Re2c begrijpt nu UTF8-literals en tekenklassen in reguliere expressies.<br \/>\nStandaard parseert re2c uitdrukkingen zoals \"\u2200x \u2203y\" als.<br \/>\neen reeks van 1-bits ASCII-symbolen e2 88 80 78 20 e2 88 83 79<br \/>\n(hex-codes), en gebruikers moeten Unicode-tekens handmatig ontsnappen:<br \/>\n\"u2200x u2203y\". Dit is erg ongemakkelijk en onverwacht voor velen<br \/>\ngebruikers (zoals blijkt uit constante bugrapports). Daarom<br \/>\nre2c biedt de optie \u2014input-encoding ,<br \/>\ndie het gedrag kan veranderen en \"\u2200x \u2203y\" kan parseren als<br \/>\n2200 78 20 2203 79.<\/p>\n<\/li>\n<li>\n<p>Re2c staat nu toe om standaard re2c-blokken te gebruiken in modus -r \u2014reuse.<br \/>\nDit is handig als het invoerbestand veel blokken bevat, en slechts een deel ervan<br \/>\nhergebruikt hoeft te worden.<\/p>\n<\/li>\n<li>\n<p>Er is een mogelijkheid toegevoegd om het formaat van waarschuwingen en foutmeldingen<br \/>\nmet de nieuwe optie \u2014location-format . Het GNU-formaat wordt weergegeven<br \/>\nals filename:line:column:, en het MSVC-formaat \u2014 als filename(line,column).<br \/>\nDeze functie kan handig zijn voor IDE-fans.<br \/>\nEr is ook een optie \u2014verbose toegevoegd, die een kort succesbericht geeft bij succes.<\/p>\n<\/li>\n<li>\n<p>De compatibiliteitsmodus met flex is verbeterd - sommige parseerfouten zijn opgelost, en<br \/>\nonjuiste prioriteiten van operatoren zijn in zeldzame gevallen gecorrigeerd.<br \/>\nHistorisch gezien stelt de optie -F \u2014flex-support in staat om code te schrijven<br \/>\nin mengvorm in flex-stijl en re2c-stijl te schrijven, wat de syntactische parsing enigszins bemoeilijkt.<br \/>\nDe compatibiliteitsmodus met flex wordt zelden gebruikt in nieuwe code,<br \/>\nmaar re2c blijft het ondersteunen voor achterwaartse compatibiliteit.<\/p>\n<\/li>\n<li>\n<p>De operator voor het aftrekken van letterlijke klassen \/ wordt nu toegepast.<br \/>\nvoor het uitpakken van de codering, wat het mogelijk maakt om het in een groter aantal gevallen toe te passen,<br \/>\nindien een codering met variabele tekenlengte wordt gebruikt (bijvoorbeeld UTF8).<\/p>\n<\/li>\n<li>\n<p>Het uitvoerbestand wordt nu atomair aangemaakt: re2c maakt eerst een tijdelijk bestand aan<br \/>\nen schrijft de resultaten daarin, waarna het tijdelijke bestand wordt hernoemd naar de uitvoer<br \/>\nin \u00e9\u00e9n bewerking.<\/p>\n<\/li>\n<li>\n<p>De documentatie is aangevuld en herschreven; in het bijzonder zijn nieuwe<br \/>\n<noindex>hoofdstukken <a rel=\"nofollow\" href=\"http:\/\/re2c.org\/manual\/manual.html#buffer-refilling\">over bufferopvulling<\/a><\/noindex><br \/>\nen <a rel=\"nofollow\" href=\"http:\/\/re2c.org\/manual\/manual.html#eof-handling\">over methoden om het einde van de invoergegevens te controleren<\/a>.<br \/>\nDe nieuwe documentatie is verzameld in de vorm van<br \/>\n<a rel=\"nofollow\" href=\"http:\/\/re2c.org\/manual\/manual.html\">uitgebreide eendaagse handleiding<\/a><br \/>\nmet voorbeelden (dezelfde bronbestanden worden weergegeven in manpage en in de online documentatie).<br \/>\nEr zijn zwakke pogingen gedaan om de leesbaarheid van de site op telefoons te verbeteren.<\/p>\n<\/li>\n<li>\n<p>Vanuit het perspectief van ontwikkelaars heeft re2c een meer volledige debug-subsysteem gekregen.<br \/>\nDe debugcode is nu uitgeschakeld in de release-builds en<br \/>\nkan worden ingeschakeld met de configure-optie \u2014enable-debug.<\/p>\n<\/li>\n<\/ul>\n<p>Deze release heeft lang geduurd - bijna een jaar.<br \/>\nDe meeste tijd, zoals altijd, ging naar het ontwikkelen van de theoretische basis en het schrijven van<br \/>\nartikel <a rel=\"nofollow\" href=\"http:\/\/re2c.org\/2019_borsotti_trofimovich_efficient_posix_submatch_extraction_on_nfa.pdf\">\u00abEffici\u00ebnte POSIX Submatch Extractie op NFA\u00bb<\/a>.<br \/>\nDe algoritmes die in het artikel worden beschreven, zijn ge\u00efmplementeerd in de experimentele bibliotheek libre2c<br \/>\n(de bibliotheek en benchmarks zijn standaard uitgeschakeld en kunnen worden ingeschakeld met de configure-optie<br \/>\n\u2014enable-libs). De bibliotheek is niet bedoeld als concurrent van de bestaande.<br \/>\nprojecten zoals RE2, maar als een onderzoeksplatform voor de ontwikkeling van nieuwe<br \/>\nalgoritmen (die vervolgens kunnen worden gebruikt in re2c of andere projecten).<br \/>\nHet is ook handig voor testen, benchmarks en het maken van bindings naar andere talen.<\/p>\n<p>Dank namens de ontwikkelaars van re2c aan iedereen die bij deze release heeft geholpen,<br \/>\nen aan de gemeenschap in het algemeen voor idee\u00ebn, bugrapporten, patches, strijdlust, enz.;]<\/p>\n<p>Bron: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"http:\/\/www.linux.org.ru\/news\/development\/15144630\">linux.org.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u044f\u0442\u043d\u0438\u0446\u0443 2-\u0433\u043e \u0430\u0432\u0433\u0443\u0441\u0442\u0430 \u0432\u044b\u0448\u0435\u043b \u0440\u0435\u043b\u0438\u0437 re2c &mdash; \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u043e\u0432 C \u0438 C++. \u041d\u0430\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e re2c \u0431\u044b\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0432 1993 \u0433\u043e\u0434\u0443 \u041f\u0438\u0442\u0435\u0440\u043e\u043c \u0411\u0430\u043c\u0431\u0443\u043b\u0438\u0441\u043e\u043c \u043a\u0430\u043a \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u043b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0438 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e \u0433\u0438\u0431\u043a\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0432\u0441\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-36759","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043f\u044f\u0442\u043d\u0438\u0446\u0443 2-\u0433\u043e \u0430\u0432\u0433\u0443\u0441\u0442\u0430 \u0432\u044b\u0448\u0435\u043b \u0440\u0435\u043b\u0438\u0437 re2c \u2014 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u043e\u0432 C \u0438 C++.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/nl\/blog\/news\/re2c-1-2\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47re2c 1.2 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043f\u044f\u0442\u043d\u0438\u0446\u0443 2-\u0433\u043e \u0430\u0432\u0433\u0443\u0441\u0442\u0430 \u0432\u044b\u0448\u0435\u043b \u0440\u0435\u043b\u0438\u0437 re2c \u2014 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u043e\u0432 C \u0438 C++.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/nl\/blog\/news\/re2c-1-2\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:13:39+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:13:39+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47re2c 1.2 | ProHoster","description":"Op vrijdag 2 augustus is de release van re2c uitgebracht \u2014 een gratis generator van lexicale analyzers voor de talen C en C++.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/news\/re2c-1-2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47re2c 1.2 | ProHoster","og:description":"\u0412 \u043f\u044f\u0442\u043d\u0438\u0446\u0443 2-\u0433\u043e \u0430\u0432\u0433\u0443\u0441\u0442\u0430 \u0432\u044b\u0448\u0435\u043b \u0440\u0435\u043b\u0438\u0437 re2c \u2014 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u043e\u0432 C \u0438 C++.","og:url":"https:\/\/prohoster.info\/nl\/blog\/news\/re2c-1-2","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:13:39+00:00","article:modified_time":"2019-10-31T19:13:39+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36759","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 04:45:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:39:23","updated":"2026-01-22 04:45:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/36759","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=36759"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/36759\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=36759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=36759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=36759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}