{"id":1678,"date":"2017-08-21T10:43:36","date_gmt":"2017-08-21T17:43:36","guid":{"rendered":"http:\/\/balafon.net\/?p=1678"},"modified":"2017-08-21T10:43:36","modified_gmt":"2017-08-21T17:43:36","slug":"peg-parser-library-for-pony","status":"publish","type":"post","link":"https:\/\/balafon.net\/?p=1678","title":{"rendered":"PEG Parser Library for Pony"},"content":{"rendered":"<p>I have recently released a PEG parser library for the Pony programming language: <a href=\"https:\/\/github.com\/kulibali\/kiuatan\">Kiuatan<\/a> (&#8220;horse&#8221; or &#8220;pony&#8221; in <a href=\"https:\/\/en.wikipedia.org\/wiki\/Chinook_Jargon#Chinook_Jargon_words_used_by_English-language_speakers\">Chinook Jargon<\/a>).  This is mostly a learning exercise for me.  It doesn&#8217;t make use of any of Pony&#8217;s actor model functionality.<\/p>\n<blockquote><p>\nKiuatan (&#8220;horse&#8221; or &#8220;pony&#8221; in Chinook Jargon) is a library for building and running parsers in the Pony programming language.<\/p>\n<p>Kiuatan uses Parsing Expression Grammar semantics, which means:<\/p>\n<ul>\n<li>Choices are ordered, i.e. the parser will always try to parse alternatives in the order they are declared.\n<ul>\n<li>Parsers do not backtrack from successful choices.<\/li>\n<li>Sequences are greedy, i.e. the parser will not backtrack from the end of a sequence.<\/li>\n<\/ul>\n<\/li>\n<li>Kiuatan parsers are &#8220;packrat&#8221; parsers; they memoize intermediate results, resulting in linear-time parsing.<\/li>\n<li>Parsers use Mederios et al&#8217;s algorithm to handle unlimited left-recursion.<\/li>\n<\/ul>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>I have recently released a PEG parser library for the Pony programming language: Kiuatan (&#8220;horse&#8221; or &#8220;pony&#8221; in Chinook Jargon). This is mostly a learning exercise for me. It doesn&#8217;t make use of any of Pony&#8217;s actor model functionality. Kiuatan (&#8220;horse&#8221; or &#8220;pony&#8221; in Chinook Jargon) is a library for building and running parsers in &hellip; <a href=\"https:\/\/balafon.net\/?p=1678\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;PEG Parser Library for Pony&#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,3],"tags":[195],"class_list":["post-1678","post","type-post","status-publish","format-standard","hentry","category-computing","category-journal","tag-pony"],"_links":{"self":[{"href":"https:\/\/balafon.net\/index.php?rest_route=\/wp\/v2\/posts\/1678","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=1678"}],"version-history":[{"count":2,"href":"https:\/\/balafon.net\/index.php?rest_route=\/wp\/v2\/posts\/1678\/revisions"}],"predecessor-version":[{"id":1680,"href":"https:\/\/balafon.net\/index.php?rest_route=\/wp\/v2\/posts\/1678\/revisions\/1680"}],"wp:attachment":[{"href":"https:\/\/balafon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1678"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/balafon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1678"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/balafon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}