{"id":58,"date":"2008-01-22T10:03:04","date_gmt":"2008-01-22T16:03:04","guid":{"rendered":"http:\/\/www.philhassey.com\/blog\/2008\/01\/22\/64k-tinypy-parsing-woes\/"},"modified":"2008-02-19T01:13:43","modified_gmt":"2008-02-19T07:13:43","slug":"64k-tinypy-parsing-woes","status":"publish","type":"post","link":"https:\/\/www.philhassey.com\/blog\/2008\/01\/22\/64k-tinypy-parsing-woes\/","title":{"rendered":"64k tinypy &#8211; parsing woes"},"content":{"rendered":"<p>I&#8217;ve been out of town for the last few days, so I haven&#8217;t done much to tinypy.  However, I have realized that my current &#8220;dumbparse&#8221; module is pretty dumb.  Two things are wrong with it:<\/p>\n<ul>\n<li>It&#8217;s slow.  Noticeably so with 8k modules, etc.<\/li>\n<li>It&#8217;s dumb.  It doesn&#8217;t give &#8220;useful&#8221; parsing errors.<\/li>\n<\/ul>\n<p>I&#8217;ve read up a bit on LR, LL, top-down, and a whole bunch of kinds of parsers and it all sounds a bit magical to me.  I&#8217;d be glad for some suggestions or ideas on where I could go from here.  My requirements are:<\/p>\n<ul>\n<li>must be pretty compact (I want my parser to be &lt; 12k in size)<\/li>\n<li>must not get exponentially slower on larger files (but it doesn&#8217;t have to be blindingly fast, just decent)<\/li>\n<li>must be able to notice where a syntax error is (indicated by token &#8211; I&#8217;ve got a good tokenizer already)<\/li>\n<li>must parse &#8220;basic&#8221; python and be written in that as well (see my current files for examples)<\/li>\n<\/ul>\n<p>Thanks!  svn:\/\/www.imitationpickles.org\/tinypy\/trunk &#8211; for the brave<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve been out of town for the last few days, so I haven&#8217;t done much to tinypy. However, I have realized that my current &#8220;dumbparse&#8221; module is pretty dumb. Two things are wrong with it: It&#8217;s slow. Noticeably so with 8k modules, etc. It&#8217;s dumb. It doesn&#8217;t give &#8220;useful&#8221; parsing errors. I&#8217;ve read up a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,6,2,32],"tags":[],"class_list":["post-58","post","type-post","status-publish","format-standard","hentry","category-crazy","category-development","category-python","category-tinypy"],"_links":{"self":[{"href":"https:\/\/www.philhassey.com\/blog\/wp-json\/wp\/v2\/posts\/58","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.philhassey.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.philhassey.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.philhassey.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.philhassey.com\/blog\/wp-json\/wp\/v2\/comments?post=58"}],"version-history":[{"count":0,"href":"https:\/\/www.philhassey.com\/blog\/wp-json\/wp\/v2\/posts\/58\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.philhassey.com\/blog\/wp-json\/wp\/v2\/media?parent=58"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.philhassey.com\/blog\/wp-json\/wp\/v2\/categories?post=58"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.philhassey.com\/blog\/wp-json\/wp\/v2\/tags?post=58"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}