{"id":1286,"date":"2010-12-02T19:02:22","date_gmt":"2010-12-03T03:02:22","guid":{"rendered":"http:\/\/balafon.net\/?p=1286"},"modified":"2010-12-02T19:02:22","modified_gmt":"2010-12-03T03:02:22","slug":"ironmeta-2-0-released","status":"publish","type":"post","link":"https:\/\/balafon.net\/?p=1286","title":{"rendered":"IronMeta 2.0 Released"},"content":{"rendered":"<p>I have released version 2.0 of the <a href=\"http:\/\/ironmeta.sourceforge.net\">IronMeta parser generator<\/a>.  IronMeta is an implementation of <a href=\"http:\/\/tinlizzie.org\/ometa\/\">OMeta<\/a> for C#.  It generates <a href=\"http:\/\/pdos.csail.mit.edu\/~baford\/packrat\/\">Packrat PEG<\/a> parsers that can recognize streams of any C# type and output any other type.<\/p>\n<p>This version contains massive efficiency improvements, and an implementation of Sergio Medeiros&#8217;s <a href=\"https:\/\/lists.csail.mit.edu\/pipermail\/peg\/2009-November\/000245.html\">algorithm<\/a> for handling left recursion, which is simpler and more general than <a href=\"http:\/\/citeseerx.ist.psu.edu\/viewdoc\/summary?doi=10.1.1.81.293\">Warth et al<\/a>&#8216;s.<\/p>\n<p>This algorithm can handle grammars of the form:<\/p>\n<pre>\r\n    A <- A a | B\r\n    B <- B b | A | C\r\n    C <- C c | B | d\r\n<\/pre>\n<p>This grammar would drive ordinary recursive-descent parsers to drink, but IronMeta handles it fine.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have released version 2.0 of the IronMeta parser generator. IronMeta is an implementation of OMeta for C#. It generates Packrat PEG parsers that can recognize streams of any C# type and output any other type. This version contains massive efficiency improvements, and an implementation of Sergio Medeiros&#8217;s algorithm for handling left recursion, which is &hellip; <a href=\"https:\/\/balafon.net\/?p=1286\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;IronMeta 2.0 Released&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[57],"class_list":["post-1286","post","type-post","status-publish","format-standard","hentry","category-computing","tag-ironmeta"],"_links":{"self":[{"href":"https:\/\/balafon.net\/index.php?rest_route=\/wp\/v2\/posts\/1286","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/balafon.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/balafon.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/balafon.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/balafon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1286"}],"version-history":[{"count":4,"href":"https:\/\/balafon.net\/index.php?rest_route=\/wp\/v2\/posts\/1286\/revisions"}],"predecessor-version":[{"id":1292,"href":"https:\/\/balafon.net\/index.php?rest_route=\/wp\/v2\/posts\/1286\/revisions\/1292"}],"wp:attachment":[{"href":"https:\/\/balafon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1286"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/balafon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1286"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/balafon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1286"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}