{"id":36745,"date":"2019-10-31T22:13:31","date_gmt":"2019-10-31T19:13:31","guid":{"rendered":"https:\/\/prohoster.info\/blog\/vypusk-generatora-leksicheskih-analizatorov-re2c-1-2\/"},"modified":"2019-10-31T22:13:31","modified_gmt":"2019-10-31T19:13:31","slug":"vypusk-generatora-leksicheskih-analizatorov-re2c-1-2","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/news\/vypusk-generatora-leksicheskih-analizatorov-re2c-1-2","title":{"rendered":"Udgivelsen af leksiske analysator-generatoren re2c 1.2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"http:\/\/re2c.org\/releases\/release_notes.html\">Har fundet sted<\/a><\/noindex> udgivelse <noindex><a rel=\"nofollow\" href=\"http:\/\/re2c.org\/\">re2c<\/a><\/noindex>, en gratis generator af leksiske analyserere til C og C++. Vi minder om, at re2c blev skrevet i 1993 af Peter Bambulis som en eksperimentel generator af meget hurtige leksiske analyserere, der adskiller sig fra andre generatorer ved hastigheden af den genererede kode og det us\u00e6dvanligt fleksible brugerinterface, som let og effektivt g\u00f8r det muligt at integrere analyserere i eksisterende kodebaser. Siden da har projektet udviklet sig af f\u00e6llesskabet og forts\u00e6tter med at v\u00e6re en platform for eksperimenter og forskning inden for formelle grammatikker og endelige automater.<\/p>\n<p>Forberedelsen af udgivelsen tog n\u00e6sten et helt \u00e5r. Det meste af tiden, som altid, blev brugt p\u00e5 at udvikle den teoretiske basis og skrive<br \/>\nartikler &#171;<noindex><a rel=\"nofollow\" href=\"http:\/\/re2c.org\/2019_borsotti_trofimovich_efficient_posix_submatch_extraction_on_nfa.pdf\">Efficient POSIX Submatch Extraction on NFA<\/a><\/noindex>&#171;.<br \/>\nAlgoritmerne beskrevet i artiklen er implementeret i et eksperimentelt bibliotek libre2c<br \/>\n(bygning af biblioteket og ydeevnetests er som standard deaktiveret og aktiveres med configure-indstillingen &#171;&#8212;enable-libs&#187;). Biblioteket er ikke t\u00e6nkt som en konkurrent til allerede eksisterende projekter som RE2, men som en forskningsplatform for udvikling af nye<br \/>\nalgoritmer (som senere kan anvendes i re2c eller i andre projekter). Det er ogs\u00e5 praktisk set i forhold til testning, ydeevnem\u00e5ling og oprettelse af bindinger til andre sprog.<\/p>\n<p>De vigtigste nyheder i version re2c 1.2:<\/p>\n<ul>\n<li class=\"l\"> En ny, forenklet metode til at kontrollere slutningen af inputdataene (&#171;EOF rule&#187;) er tilf\u00f8jet. Dette er gjort muligt med indstillingen &#171;re2c:eof&#187;<br \/>\n   som giver mulighed for at v\u00e6lge terminalsymbolet,<br \/>\n   og en s\u00e6rlig regel &#171;$&#187;, som aktiveres, hvis leksikeren<br \/>\n   har n\u00e5et slutningen af inputdataene.<br \/>\n   Historisk set tilbyder re2c flere m\u00e5der at tjekke p\u00e5<br \/>\n   slutningen af inputdataene, varierende i begr\u00e6nsning, effektivitet og enkelhed<br \/>\n   i anvendelsen. Den nye metode er designet til at forenkle kodningen, samtidig med at den<br \/>\n   forbliver effektiv og bredt anvendelig. De gamle metoder<br \/>\n   arbejder stadig og kan v\u00e6re at foretr\u00e6kke i visse tilf\u00e6lde.<\/p>\n<li class=\"l\"> Muligheden for at inkludere eksterne filer med direktivet<br \/>\n   &#171;\n\/*!include:re2c &#171;file.re&#187; *&#187;, hvor &#171;file.re&#187; &#8212; er navnet p\u00e5 den inkluderede fil. Re2c s\u00f8ger efter filer i kataloget med den inkluderede fil,<br \/>\n   samt i listen over stier angivet med indstillingen &#171;-I&#187;.<br \/>\n   Inkluderede filer kan inkludere andre filer.<br \/>\n   Re2c leverer &#171;standard&#187; filer i katalogen &#171;include\/&#187;<br \/>\n   af projektet &#8212; det er antaget, at nyttige definitioner vil blive opbevaret der<br \/>\n   af regul\u00e6re udtryk, noget i stil med standardbiblioteket.<br \/>\n   Indtil videre er der efter anmodning fra brugerne tilf\u00f8jet en fil med definitioner af Unicode-kategorier.<\/p>\n<li class=\"l\"> Muligheden for at generere header-filer med vilk\u00e5rligt<br \/>\n   indhold ved hj\u00e6lp af indstillingerne &#171;-t &#8212;type-header&#187; (eller tilsvarende<br \/>\n   konfigurationer) og nye direktiver &#171;\n\/*!header:re2c:on*&#187; og<br \/>\n   &#171;\n\/*!header:re2c:off*&#187;. Dette kan v\u00e6re nyttigt i nogle tilf\u00e6lde,<br \/>\n   hvor re2c skal generere definitioner af variabler, strukturer og makroer,<br \/>\n   der anvendes i andre overs\u00e6ttelsesenheder.<\/p>\n<li class=\"l\"> Re2c forst\u00e5r nu UTF8-litteraler og tegnklasser i regul\u00e6re udtryk.<br \/>\n   Som standard parser re2c udtryk som &#171;&#8704;x &#8707;y&#187; som<br \/>\n   en sekvens af 1-bit ASCII-tegn &#171;e2 88 80 78 20 e2 88 83 79&#187;<br \/>\n   (hex-koder), og brugerne m\u00e5 manuelt eskalere Unicode-tegn:<br \/>\n   &#171;&#092;&#092;u2200x &#092;&#092;u2203y&#187;. Dette er meget ubelejligt og uventet for mange<br \/>\n   brugere (hvilket fremg\u00e5r af de konstant tilbagevendende bugrapporter). Derfor<br \/>\n   re2c giver mulighed for indstillingen &#171;&#8212;input-encoding {ascii | utf8}&#187;<br \/>\n   som g\u00f8r det muligt at \u00e6ndre adf\u00e6rden og parse &#171;&#8704;x &#8707;y&#187; som<br \/>\n   &#171;2200 78 20 2203 79&#187;.<\/p>\n<li class=\"l\"> Re2c tillader nu brug af normale re2c-blokke i &#171;-r &#8212;reuse&#187;-tilstand.<br \/>\n   Dette er praktisk, hvis indgangsfilen indeholder mange blokke, og kun en del af dem<br \/>\n   har brug for at blive genbrugt.<\/p>\n<li class=\"l\"> Der er nu mulighed for at angive formatet for advarsler og fejlmeddelelser<br \/>\n   med den nye indstilling &#171;&#8212;location-format {gnu | msvc}&#187;. GNU-format vises<br \/>\n   som &#171;filnavn:linje:kolonne:&#187;, mens MSVC-format &#8212; vises som &#171;filnavn(linje, kolonne)&#187;.<br \/>\n   Denne mulighed kan v\u00e6re nyttig for IDE-elskere.<br \/>\n   Der er ogs\u00e5 tilf\u00f8jet en indstilling &#171;&#8212;verbose&#187;, som viser en kort sejrsmelding ved succes.                                                 <\/p>\n<li class=\"l\"> Kompatibilitets-tilstanden med flex er forbedret &#8212; nogle parsefejl er blevet rettet og<br \/>\n   forkert operatorprioritering i sj\u00e6ldne tilf\u00e6lde er rettet.<br \/>\n   Historisk set tillader indstillingen &#171;-F &#8212;flex-support&#187; at skrive kode<br \/>\n   i blandet flex- og re2c-stil, hvilket g\u00f8r den syntaktiske parsing en smule vanskeligere.<br \/>\n   Kompatibilitetsmodus med flex bruges sj\u00e6ldent i ny kode,<br \/>\n   men re2c forts\u00e6tter med at st\u00f8tte den for bagudkompatibilitet.<\/p>\n<li class=\"l\"> Subtraheringen af tegnklasser &#171; \/ &#187; anvendes nu<br \/>\n   f\u00f8r implementeringen af kodningen, hvilket muligg\u00f8r anvendelse i flere tilf\u00e6lde,<br \/>\n   hvis der anvendes kodning med variabel l\u00e6ngde (f.eks. UTF8).<\/p>\n<li class=\"l\"> Outputfilen oprettes nu atomisk: re2c opretter f\u00f8rst en midlertidig fil<br \/>\n   og skriver resultatet til den, hvorefter den omd\u00f8ber den midlertidige fil til outputfilen<br \/>\n   i \u00e9n operation.<\/p>\n<li class=\"l\"> Dokumentationen er blevet revideret og omskrevet; specifikt er der tilf\u00f8jet nye<br \/>\n   kapitler om <noindex><a rel=\"nofollow\" href=\"http:\/\/re2c.org\/manual\/manual.html#buffer-refilling\">http:\/\/re2c.org\/manual\/manual.html#buffer-refilling bufferudfyldning<\/a><\/noindex><br \/>\n   og <noindex><a rel=\"nofollow\" href=\"http:\/\/re2c.org\/manual\/manual.html#eof-handling\">om metoder til at kontrollere slutningen p\u00e5 inddata,<\/a><\/noindex>.<br \/>\n   Den nye dokumentation er samlet i form af<br \/>\n   <noindex><a rel=\"nofollow\" href=\"http:\/\/re2c.org\/manual\/manual.html\">en fyldestg\u00f8rende en-sides vejledning<\/a><\/noindex><br \/>\n   med eksempler (de samme kilder vises i manpage og online dokumentation).<br \/>\n   Der blev gjort svage fors\u00f8g p\u00e5 at forbedre l\u00e6sbarheden af webstedet p\u00e5 telefoner.<\/p>\n<li class=\"l\"> Set fra udviklernes perspektiv har re2c f\u00e5et et mere omfattende<br \/>\n   debuggersystem. Debuggerkoden er nu deaktiveret i release-versioner og<br \/>\n   kan aktiveres med configure-indstillingen &#171;&#8212;enable-debug&#187;.<\/p>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Kilde: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=51209\">opennet.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0440\u0435\u043b\u0438\u0437 re2c, \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\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 \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443. \u0421 \u0442\u0435\u0445 \u043f\u043e\u0440 [&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-36745","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=\"\u0421\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0440\u0435\u043b\u0438\u0437 re2c, \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.\" \/>\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\/vypusk-generatora-leksicheskih-analizatorov-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\udd47\u0412\u044b\u043f\u0443\u0441\u043a \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 re2c 1.2 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0440\u0435\u043b\u0438\u0437 re2c, \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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/news\/vypusk-generatora-leksicheskih-analizatorov-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:31+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:13:31+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\udd47Udgivelsen af leksisk analysegenerator re2c 1.2 | ProHoster","description":"Releasen af re2c, en gratis generator til leksikalsk analyse.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/news\/vypusk-generatora-leksicheskih-analizatorov-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\udd47\u0412\u044b\u043f\u0443\u0441\u043a \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 re2c 1.2 | ProHoster","og:description":"\u0421\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0440\u0435\u043b\u0438\u0437 re2c, \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.","og:url":"https:\/\/prohoster.info\/da\/blog\/news\/vypusk-generatora-leksicheskih-analizatorov-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:31+00:00","article:modified_time":"2019-10-31T19:13:31+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36745","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:42: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:42: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\/36745","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=36745"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/36745\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=36745"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=36745"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=36745"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}