{"id":1154,"date":"2012-01-23T23:18:29","date_gmt":"2012-01-23T22:18:29","guid":{"rendered":"http:\/\/blog.benny-baumann.de\/?p=1154"},"modified":"2012-01-23T23:18:29","modified_gmt":"2012-01-23T22:18:29","slug":"regulare-langenfelder","status":"publish","type":"post","link":"https:\/\/blog.benny-baumann.de\/?p=1154","title":{"rendered":"Regul\u00e4re L\u00e4ngenfelder"},"content":{"rendered":"<p>Nachdem die Zeit auf dem Congress mal wieder viel zu schnell rum ging und man als Engel da von den Vortr\u00e4gen immer recht wenig mitbekommt, nahm ich mir die Tage einfach mal die Zeit f\u00fcr die diversen Vortr\u00e4ge. Gestern Abend war dann der Vortrag zum Thema &#8222;<a href=\"http:\/\/mirror.fem-net.de\/CCC\/28C3\/mp4-h264-HQ\/28c3-4763-en-the_science_of_insecurity_h264.mp4\">The Science of Insecurity<\/a>&#8220; dran.<\/p>\n<p>Der Vortrag an sich war auch recht gut aufgebaut und sehr informativ aber an einer Stelle fragte man sich dann doch &#8230; was erz\u00e4hlen die da? Konkret meine ich den Punkt bzgl. der Nutzung von L\u00e4ngenfeldern. Die Aussage der Vortrageden war ungef\u00e4hr &#8222;L\u00e4ngenfelder d\u00fcrfen nicht verwendet, werden weil diese nicht kontextfreie Sprachen erzeugen.&#8220; Nunja, stimmt nicht.<!--more--><\/p>\n<p>Aber der Reihe nach. Wie im Vortrag ziemlich richtig beschrieben, kann man mit verschieden komplexen Sprachklassen unterschiedlich viele Dinge anstellen. So lassen sich mit regul\u00e4ren Sprachen &#8211; oder oftmals auch regul\u00e4ren Ausdr\u00fccken genannt &#8211; nicht alle Dinge beschreiben, die eine kontextfreie oder gar eine kontextsensitive Sprache erlaubt. Soweit auch richtig im Vortrag dargestellt.<\/p>\n<p>Nun m\u00f6chte man, auch hier stimme ich den Vortragenden durchaus zu, m\u00f6glichst einen kleinen Sprachumfang haben. D.h. wenn ich zum Pr\u00fcfen meines Datenpakets f\u00fcr die Bestellung eines Sacks Reis bei einer Webanwendung ein Halteproblem l\u00f6sen muss, um zu entscheiden, ob die Bestellung g\u00fcltig ist, ist der Inhalt des Datenpaketes wahrscheinlich zu komplex gedacht. Andererseits soll man laut den Autoren aber einfache Techniken wie L\u00e4ngenangaben f\u00fcr eingebettete Daten nicht verwenden, da diese nicht kontextfrei darstellbar w\u00e4ren. <\/p>\n<p>Und ab diesem Moment schlug mein Bullshit-Meter mit etwa 10 kBullshit aus. Denn L\u00e4ngenfelder sind, entgegen den Behauptungen der Vortragenden durchaus kontextfrei in einer Sprache integrierbar; sie sind im Gegenteil sogar regul\u00e4r \ud83d\ude09<\/p>\n<p>Mal ein Beispiel. Nehmen wir ein einfaches Datenpaket, welches ein L\u00e4ngenfeld mit 4 Bit Breite, gefolgt von 0..2`4-1 Elementen des Typs Buchstabe haben soll. Moment, ich glaube, die Sprache l\u00e4sst sich durch folgende Elemente beschreiben:<\/p>\n<pre lang=\"pcre\">(?:0(?:0(?:0(?:0|1C)|1(?:0|1C)CC)|1(?:0(?:0|1C)|1(?:0|1C)CC)CCCC)|1(?:0(?:0(?:0|1C)|1(?:0|1C)CC)|1(?:0(?:0|1C)|1(?:0|1C)CC)CCCC)CCCCCCCC)\r\n<\/pre>\n<p>Und siehe da, wenn wir C durch unser Element ersetzen, also z.B. . f\u00fcr beliebiges Zeichen, oder die Syntax f\u00fcr eine wohl definierte Struktur, dann hat man eine wunderbar einfache, durch eine regul\u00e4re Sprache beschriebene Datenstruktur. Und was ist daran nun bitte nicht kontextfrei?<\/p>\n<p>Ach ja, wo wir gerade dabei sind: Selbst wenn man das L\u00e4ngenfeld mit in die L\u00e4ngenangabe einbezieht, l\u00e4sst sich mit nur wenig Aufwand der passende regul\u00e4re, deterministisch-kontextfreie Ausdruck daf\u00fcr angeben. Es brauch dazu nicht mal viel Magie, sondern einfach etwas kurzen Hirnschmalz. Wobei man im Zweifelsfall nicht mit einem regul\u00e4ren Ausdruck validieren m\u00f6chte, sondern eher mit einem vern\u00fcnftigen Parser. Aber gut, das ist wiederum eine andereGeschichte \ud83d\ude09<\/p>\n<p class=\"wp-flattr-button\"><a href=\"https:\/\/blog.benny-baumann.de\/?flattrss_redirect&amp;id=1154&amp;md5=958db2489dc595e7938c6f677676456c\" title=\"Flattr\" target=\"_blank\"><img src=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" srcset=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" alt=\"Flattr this!\"\/><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Nachdem die Zeit auf dem Congress mal wieder viel zu schnell rum ging und man als Engel da von den Vortr\u00e4gen immer recht wenig mitbekommt, nahm ich mir die Tage einfach mal die Zeit f\u00fcr die diversen Vortr\u00e4ge. Gestern Abend war dann der Vortrag zum Thema &#8222;The Science of Insecurity&#8220; dran. Der Vortrag an sich [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1],"tags":[325,74,326,149,327],"class_list":["post-1154","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-28c3","tag-ccc","tag-congress","tag-regexps","tag-sprachen"],"_links":{"self":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/1154","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1154"}],"version-history":[{"count":2,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/1154\/revisions"}],"predecessor-version":[{"id":1157,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/1154\/revisions\/1157"}],"wp:attachment":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1154"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1154"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}