{"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\/da\/blog\/news\/re2c-1-2","title":{"rendered":"re2c 1.2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Fredag den 2. august blev re2c udgivet - en gratis generator af leksikalske analysatorer til C og C++. Det skal bem\u00e6rkes, at re2c blev skrevet i 1993 af Peter Bambulis som en eksperimentel generator af meget hurtige leksikalske analysatorer, der adskiller sig fra andre generatorer ved hastigheden af den genererede kode og en us\u00e6dvanligt fleksibel brugergr\u00e6nseflade, som g\u00f8r det nemt og effektivt at integrere analysatorer i en eksisterende kodebase. Siden da har projektet udviklet sig med samfundet og forts\u00e6tter med at v\u00e6re en platform for eksperimenter og forskning inden for formelle grammtik og endelige automater.<\/p>\n<p>Hovednyhederne i version 1.2:<\/p>\n<ul>\n<li>\n<p>En ny (forenklet) metode til at kontrollere slutningen af inddata<br \/>\n(eng. \u00abEOF rule\u00bb).<br \/>\nTil dette er konfigurationen re2c:eof tilf\u00f8jet,<br \/>\nsom giver mulighed for at v\u00e6lge terminalsymbolet,<br \/>\nog en s\u00e6rlig regel $, der aktiveres, hvis leksikeren<br \/>\nhar n\u00e5et slutningen af inputdataene.<br \/>\nHistorisk set tilbyder re2c flere m\u00e5der at tjekke p\u00e5<br \/>\nslutningen af inputdataene, varierende i begr\u00e6nsning, effektivitet og enkelhed<br \/>\ni anvendelsen. Den nye metode er designet til at forenkle kodningen, samtidig med at den<br \/>\nforbliver effektiv og bredt anvendelig. De gamle metoder<br \/>\narbejder stadig og kan v\u00e6re at foretr\u00e6kke i visse tilf\u00e6lde.<\/p>\n<\/li>\n<li>\n<p>Muligheden for at inkludere eksterne filer med direktivet<br \/>\n\/*!include:re2c &quot;file.re&quot; *\/, \u0433\u0434\u0435 file.re<br \/>\ner navnet p\u00e5 den inkluderede fil. Re2c s\u00f8ger filer i den inkluderede fils bibliotek,<br \/>\nsamt i den liste af stier, der er angivet med -I indstillingen.<br \/>\nInkluderede filer kan inkludere andre filer.<br \/>\nRe2c leverer \u00abstandard\u00bb filer i mappen include\/<br \/>\nprojektet - det antages, at nyttige definitioner vil blive indsamlet her.<br \/>\naf regul\u00e6re udtryk, noget i stil med standardbiblioteket.<br \/>\nIndtil videre er der efter anmodning fra brugerne tilf\u00f8jet en fil med definitioner af Unicode-kategorier.<\/p>\n<\/li>\n<li>\n<p>Muligheden for at generere header-filer med vilk\u00e5rligt<br \/>\nindhold ved hj\u00e6lp af indstillingen -t \u2014type-header (eller de relevante<br \/>\nkonfigurationer) og de nye direktiver \/*!header:re2c:on*\/ og<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 \/>\nhvor re2c skal generere definitioner af variabler, strukturer og makroer,<br \/>\nder anvendes i andre overs\u00e6ttelsesenheder.<\/p>\n<\/li>\n<li>\n<p>Re2c forst\u00e5r nu UTF8-litteraler og tegnklasser i regul\u00e6re udtryk.<br \/>\nSom standard parser re2c udtryk som \u00ab\u2200x \u2203y\u00bb.<br \/>\nen sekvens af 1-bit ASCII-tegn e2 88 80 78 20 e2 88 83 79<br \/>\n(hex-koder), og brugerne m\u00e5 manuelt eskalere Unicode-tegn:<br \/>\n\u00abu2200x u2203y\u00bb. Dette er meget ubelejligt og uventet for mange.<br \/>\nbrugere (hvilket fremg\u00e5r af de konstant tilbagevendende bugrapporter). Derfor<br \/>\nre2c tilbyder muligheden \u2014input-encoding ,<br \/>\nder g\u00f8r det muligt at \u00e6ndre adf\u00e6rden og parse \u00ab\u2200x \u2203y\u00bb som<br \/>\n2200 78 20 2203 79.<\/p>\n<\/li>\n<li>\n<p>Re2c giver nu mulighed for at bruge almindelige re2c-blokke i tilstand -r \u2014reuse.<br \/>\nDette er praktisk, hvis indgangsfilen indeholder mange blokke, og kun en del af dem<br \/>\nhar brug for at blive genbrugt.<\/p>\n<\/li>\n<li>\n<p>Der er nu mulighed for at angive formatet for advarsler og fejlmeddelelser<br \/>\nved hj\u00e6lp af den nye mulighed \u2014location-format . GNU-formatet vises<br \/>\nsom filename:line:column:, mens MSVC-formatet - vises som filename(line,column).<br \/>\nDenne mulighed kan v\u00e6re nyttig for IDE-elskere.<br \/>\nDer er ogs\u00e5 tilf\u00f8jet en mulighed \u2014verbose, som viser en kort sejrrig meddelelse i tilf\u00e6lde af succes.<\/p>\n<\/li>\n<li>\n<p>Kompatibilitetsmodus med flex er blevet forbedret - nogle parserfejl er blevet rettet.<br \/>\nforkert operatorprioritering i sj\u00e6ldne tilf\u00e6lde er rettet.<br \/>\nHistorisk set giver muligheden -F \u2014flex-support mulighed for at skrive kode.<br \/>\ni blandet flex- og re2c-stil, hvilket g\u00f8r den syntaktiske parsing en smule vanskeligere.<br \/>\nKompatibilitetsmodus med flex bruges sj\u00e6ldent i ny kode,<br \/>\nmen re2c forts\u00e6tter med at st\u00f8tte den for bagudkompatibilitet.<\/p>\n<\/li>\n<li>\n<p>Operatoren til subtraktion af tegnklasser \/ anvendes nu.<br \/>\nf\u00f8r implementeringen af kodningen, hvilket muligg\u00f8r anvendelse i flere tilf\u00e6lde,<br \/>\nhvis der anvendes kodning med variabel l\u00e6ngde (f.eks. UTF8).<\/p>\n<\/li>\n<li>\n<p>Outputfilen oprettes nu atomisk: re2c opretter f\u00f8rst en midlertidig fil<br \/>\nog skriver resultatet til den, hvorefter den omd\u00f8ber den midlertidige fil til outputfilen<br \/>\ni \u00e9n operation.<\/p>\n<\/li>\n<li>\n<p>Dokumentationen er blevet revideret og omskrevet; specifikt er der tilf\u00f8jet nye<br \/>\n<noindex>kapitel <a rel=\"nofollow\" href=\"http:\/\/re2c.org\/manual\/manual.html#buffer-refilling\">om bufferfyldning<\/a><\/noindex><br \/>\nog <a rel=\"nofollow\" href=\"http:\/\/re2c.org\/manual\/manual.html#eof-handling\">om metoder til at kontrollere slutningen p\u00e5 inddata,<\/a>.<br \/>\nDen nye dokumentation er samlet i form af<br \/>\n<a rel=\"nofollow\" href=\"http:\/\/re2c.org\/manual\/manual.html\">en udt\u00f8mmende en-sides manual<\/a><br \/>\nmed eksempler (de samme kilder vises i manpage og online dokumentation).<br \/>\nDer blev gjort svage fors\u00f8g p\u00e5 at forbedre l\u00e6sbarheden af webstedet p\u00e5 telefoner.<\/p>\n<\/li>\n<li>\n<p>Set fra udviklernes perspektiv har re2c f\u00e5et et mere omfattende<br \/>\ndebuggersystem. Debuggerkoden er nu deaktiveret i release-versioner og<br \/>\nkan aktiveres ved hj\u00e6lp af configure-muligheden \u2014enable-debug.<\/p>\n<\/li>\n<\/ul>\n<p>Denne udgivelse tog lang tid - n\u00e6sten et helt \u00e5r.<br \/>\nDet meste af tiden, som altid, gik med at udvikle den teoretiske base og skrive<br \/>\nartikler <a rel=\"nofollow\" href=\"http:\/\/re2c.org\/2019_borsotti_trofimovich_efficient_posix_submatch_extraction_on_nfa.pdf\">\u00abEfficient POSIX Submatch Extraction on NFA\u00bb<\/a>.<br \/>\nAlgoritmerne beskrevet i artiklen er implementeret i et eksperimentelt bibliotek libre2c<br \/>\n(bygning af biblioteker og benchmarks er som standard deaktiveret og kan aktiveres med configure-optionen<br \/>\n\u2014enable-libs). Biblioteket er ikke t\u00e6nkt som en konkurrent til eksisterende.<br \/>\nprojekter som RE2, men som en forskningsplatform til udvikling af nye<br \/>\nalgoritmer (som senere kan bruges i re2c eller andre projekter).<br \/>\nDette er ogs\u00e5 praktisk set i forhold til testning, benchmarks og oprettelse af bindings til andre sprog.<\/p>\n<p>Tak fra udviklerne af re2c til alle, der har hjulpet med at f\u00e5 denne udgivelse til at ske,<br \/>\nog generelt til f\u00e6llesskabet for id\u00e9er, fejlrapporter, patches, kampgejst osv. ;]<\/p>\n<p>Kilde: <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.3 - 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\/da\/blog\/news\/re2c-1-2\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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":"Fredag den 2. august blev re2c udgivet - en gratis generator af leksikalanalysatorer til C og C++.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/news\/re2c-1-2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/36759","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=36759"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/36759\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=36759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=36759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=36759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}