<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-1700157236206200597.post3308933040690383564..comments</id><updated>2011-04-21T10:02:54.679-07:00</updated><category term='ruby'/><category term='linq'/><category term='clojure'/><category term='erlang'/><category term='programming'/><category term='continuation'/><category term='decorator'/><category term='manycore'/><category term='monad'/><category term='actor'/><category term='events'/><category term='parsing'/><category term='osx'/><category term='concurrency'/><category term='mutability'/><category term='c#'/><category term='turing'/><category term='shareever'/><category term='iterator'/><category term='sql'/><category term='python'/><category term='rx'/><category term='bits'/><category term='haskell'/><category term='reactive'/><category term='imagemagick'/><category term='productivity'/><category term='automation'/><category term='enumerator'/><category term='mediserve'/><category term='wes'/><category term='dtrace'/><category term='message-passing'/><category term='generator'/><title type='text'>Comments on Valued Lessons: Pysec: Monadic Combinatoric Parsing in Python (aka...</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.valuedlessons.com/feeds/3308933040690383564/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default'/><link rel='alternate' type='text/html' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html'/><author><name>Peter Thatcher</name><uri>http://www.blogger.com/profile/01092342988993218446</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1700157236206200597.post-6163176874711928940</id><published>2011-04-21T10:02:54.679-07:00</published><updated>2011-04-21T10:02:54.679-07:00</updated><title type='text'>ah this is how:

    value, state = expr.run(Parse...</title><content type='html'>ah this is how:&lt;br /&gt;&lt;br /&gt;    value, state = expr.run(ParserState(ByteStream(inputline)))&lt;br /&gt;    if state.position != len(inputline):&lt;br /&gt;        raise ParseError(&amp;quot;couldn&amp;#39;t parse entire line %s, left over: %s&amp;quot; % (&lt;br /&gt;            inputline, inputline[state.position:]))</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/6163176874711928940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/6163176874711928940'/><link rel='alternate' type='text/html' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html?showComment=1303405374679#c6163176874711928940' title=''/><author><name>Laxori666</name><uri>http://www.blogger.com/profile/03434854378035632469</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html' ref='tag:blogger.com,1999:blog-1700157236206200597.post-3308933040690383564' source='http://www.blogger.com/feeds/1700157236206200597/posts/default/3308933040690383564' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2086402511'/></entry><entry><id>tag:blogger.com,1999:blog-1700157236206200597.post-3800643402523398535</id><published>2011-04-21T09:30:13.688-07:00</published><updated>2011-04-21T09:30:13.688-07:00</updated><title type='text'>how do you tell whether the whole input stream was...</title><content type='html'>how do you tell whether the whole input stream was parsed?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/3800643402523398535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/3800643402523398535'/><link rel='alternate' type='text/html' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html?showComment=1303403413688#c3800643402523398535' title=''/><author><name>Laxori666</name><uri>http://www.blogger.com/profile/03434854378035632469</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html' ref='tag:blogger.com,1999:blog-1700157236206200597.post-3308933040690383564' source='http://www.blogger.com/feeds/1700157236206200597/posts/default/3308933040690383564' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2086402511'/></entry><entry><id>tag:blogger.com,1999:blog-1700157236206200597.post-2692716410636895794</id><published>2009-01-18T15:40:00.000-08:00</published><updated>2009-01-18T15:40:00.000-08:00</updated><title type='text'>Hi Peter - &lt;br&gt; Great! Thanks very much for your r...</title><content type='html'>Hi Peter - &lt;BR/&gt; Great! Thanks very much for your reply! &lt;BR/&gt; Pysec is a great little app when you're getting into Python and are also keen on FP (as I am). &lt;BR/&gt; As a token of thanks, here's a link to another *very cool* Python parsing app. It's called "yeanpypa" (YEt ANother PYthon PArser lib). Very nicely done - it is inspired by the C++ Boost::Spirit parser library (which I have a fair bit of experience with, and which rocks!).&lt;BR/&gt;Yeanpypa doesn't use an FP approach, but it's quite a nice "BNF"-y style parser. &lt;BR/&gt;http://freshmeat.net/projects/yeanpypa/</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/2692716410636895794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/2692716410636895794'/><link rel='alternate' type='text/html' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html?showComment=1232322000000#c2692716410636895794' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html' ref='tag:blogger.com,1999:blog-1700157236206200597.post-3308933040690383564' source='http://www.blogger.com/feeds/1700157236206200597/posts/default/3308933040690383564' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-357709404'/></entry><entry><id>tag:blogger.com,1999:blog-1700157236206200597.post-7913756975631158872</id><published>2009-01-07T05:20:00.000-08:00</published><updated>2009-01-07T05:20:00.000-08:00</updated><title type='text'>Andy, &lt;br&gt;&lt;br&gt;I'm glad you like it.  Unfortunately...</title><content type='html'>Andy, &lt;BR/&gt;&lt;BR/&gt;I'm glad you like it.  Unfortunately, for my main use, Pysec too slow (I made a blog entry about this called "why are my monads so slow?"), and so I haven't worked on it at all. &lt;BR/&gt;&lt;BR/&gt;Hopefully it will be fast enough and work well enough for your needs.  You're free to do whatever you want with it.  Consider it "public domain", I guess.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/7913756975631158872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/7913756975631158872'/><link rel='alternate' type='text/html' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html?showComment=1231334400000#c7913756975631158872' title=''/><author><name>Peter Thatcher</name><uri>http://www.blogger.com/profile/01092342988993218446</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html' ref='tag:blogger.com,1999:blog-1700157236206200597.post-3308933040690383564' source='http://www.blogger.com/feeds/1700157236206200597/posts/default/3308933040690383564' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-855974674'/></entry><entry><id>tag:blogger.com,1999:blog-1700157236206200597.post-3765354795099604855</id><published>2008-12-22T17:31:00.000-08:00</published><updated>2008-12-22T17:31:00.000-08:00</updated><title type='text'>Hi Peter! &lt;br&gt;&lt;br&gt;I've just come across Pysec - a ...</title><content type='html'>Hi Peter! &lt;BR/&gt;&lt;BR/&gt;I've just come across Pysec - a great parser library, I love it! &lt;BR/&gt;&lt;BR/&gt;I've known about Haskell's Parsec for some time (and that's very impressive too), but it is good to see a similar library in a somewhat-more-familiar language. Haskell has a bit of a learning-curve to it.... ;)  &lt;BR/&gt;&lt;BR/&gt;I'm very keen to use this library in the near-future. I was wondering about the license - is it "public domain"? ( I always give credit anyway... )  &lt;BR/&gt; Many thanks for this post (and for a great library! &lt;BR/&gt; - Andy</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/3765354795099604855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/3765354795099604855'/><link rel='alternate' type='text/html' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html?showComment=1229995860000#c3765354795099604855' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html' ref='tag:blogger.com,1999:blog-1700157236206200597.post-3308933040690383564' source='http://www.blogger.com/feeds/1700157236206200597/posts/default/3308933040690383564' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-861923420'/></entry><entry><id>tag:blogger.com,1999:blog-1700157236206200597.post-7266305059706649096</id><published>2008-02-14T08:40:00.000-08:00</published><updated>2008-02-14T08:40:00.000-08:00</updated><title type='text'>Perhaps I can characterize Pysec/Parsec as a way t...</title><content type='html'>Perhaps I can characterize Pysec/Parsec as a way to build parsers which are macro-expansion-friendly. &lt;BR/&gt;I think the general case of this is that they allow parsers to change behavior based on what as already been parsed, which, in a way, is viewing the parsed text less as a language of a grammar and more as processing instructions.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/7266305059706649096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/7266305059706649096'/><link rel='alternate' type='text/html' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html?showComment=1203007200000#c7266305059706649096' title=''/><author><name>Peter Thatcher</name><uri>http://www.blogger.com/profile/01092342988993218446</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html' ref='tag:blogger.com,1999:blog-1700157236206200597.post-3308933040690383564' source='http://www.blogger.com/feeds/1700157236206200597/posts/default/3308933040690383564' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-855974674'/></entry><entry><id>tag:blogger.com,1999:blog-1700157236206200597.post-1245198809278895469</id><published>2008-02-14T05:33:00.000-08:00</published><updated>2008-02-14T05:33:00.000-08:00</updated><title type='text'>Don't be too impressed.  The only reason I was abl...</title><content type='html'>Don't be too impressed.  The only reason I was able to crank this out so quickly was because it was mostly a replication of a helper function already defined in pyparsing, called countedArray.  Now that you've see the other implementation, look at the implementation of countedArray (here: http://pyparsing.pastebin.com/m278ec49a).  It also uses a "global" value (the variable arrayExpr), but at least it hides it inside the countedArray method.&lt;BR/&gt;&lt;BR/&gt;My experience with macro expansion is that it is not a parser-friendly process in general.  For instance, unless your parser engine allows you to back up to reparse generated text, you have to perform multiple passes on the input source - one to do macro expansion (potentially recursively, which should still be doable in a single pass), and then a second pass to parse the macro-expanded code.  I don't really feel too bad about this, C compilers have to do much the same thing.&lt;BR/&gt;&lt;BR/&gt;-- Paul</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/1245198809278895469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/1245198809278895469'/><link rel='alternate' type='text/html' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html?showComment=1202995980000#c1245198809278895469' title=''/><author><name>Paul McGuire</name><uri>http://www.geocities.com/ptmcg</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html' ref='tag:blogger.com,1999:blog-1700157236206200597.post-3308933040690383564' source='http://www.blogger.com/feeds/1700157236206200597/posts/default/3308933040690383564' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-756468305'/></entry><entry><id>tag:blogger.com,1999:blog-1700157236206200597.post-810684685016547514</id><published>2008-02-14T03:23:00.000-08:00</published><updated>2008-02-14T03:23:00.000-08:00</updated><title type='text'>Paul, thanks for your response.  It helped me comp...</title><content type='html'>Paul, thanks for your response.  It helped me compare pyparsing and Pysec.  I'll have to write another article comparing the two, but here's what I found initially:&lt;BR/&gt;&lt;BR/&gt;1.  It can parse b7:XXXXXXX, but it's a hack.  I'm impressed you figured out such a hack so quickly, but it essentially requires modifying a global variable to work.  &lt;BR/&gt;&lt;BR/&gt;2.  It can parse [&amp;a [1, 2, 3] @a @a].  A tweaking of the macro expansion on the wiki is sufficient.  But I'm calling this one a hack too because it also requires modifying a global value (the macro table).  &lt;BR/&gt;&lt;BR/&gt;So, it works for my purposes, but I don't really like how.  Admittedly, the format I'm parsing isn't definable as a grammar, and so a parsing library built around the idea of a grammar doesn't match too well.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/810684685016547514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/810684685016547514'/><link rel='alternate' type='text/html' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html?showComment=1202988180000#c810684685016547514' title=''/><author><name>Peter Thatcher</name><uri>http://www.blogger.com/profile/01092342988993218446</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html' ref='tag:blogger.com,1999:blog-1700157236206200597.post-3308933040690383564' source='http://www.blogger.com/feeds/1700157236206200597/posts/default/3308933040690383564' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-855974674'/></entry><entry><id>tag:blogger.com,1999:blog-1700157236206200597.post-4255826255878668467</id><published>2008-02-13T21:03:00.000-08:00</published><updated>2008-02-13T21:03:00.000-08:00</updated><title type='text'>Peter -&lt;br&gt;&lt;br&gt;For an implementation of the size-p...</title><content type='html'>Peter -&lt;BR/&gt;&lt;BR/&gt;For an implementation of the size-prefixed binary data, see: &lt;BR/&gt;http://pyparsing.pastebin.com/m72db9ab6&lt;BR/&gt;&lt;BR/&gt;As for the second question, I don't quite understand what you are describing, but there is a macroProcessor example on the pyparsing wiki Examples page.&lt;BR/&gt;&lt;BR/&gt;Pyparsing has epydoc-generated class docs, UML diagrams, and two presentations I made at Pycon06, that are included with the source or docs release on SourceForge.  If you go to the Documentation page of the wiki, there are some links to articles, blog entries, and if you want to spring for $10, a ShortCut on O'Reilly.&lt;BR/&gt;&lt;BR/&gt;Post a comment on the wiki home page Discussion tab, if you want to pursue item #2 further.&lt;BR/&gt;&lt;BR/&gt;-- Paul</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/4255826255878668467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/4255826255878668467'/><link rel='alternate' type='text/html' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html?showComment=1202965380000#c4255826255878668467' title=''/><author><name>Paul McGuire</name><uri>http://pyparsing.wikispaces.com</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html' ref='tag:blogger.com,1999:blog-1700157236206200597.post-3308933040690383564' source='http://www.blogger.com/feeds/1700157236206200597/posts/default/3308933040690383564' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1682170236'/></entry><entry><id>tag:blogger.com,1999:blog-1700157236206200597.post-2401447663624079621</id><published>2008-02-13T15:27:00.000-08:00</published><updated>2008-02-13T15:27:00.000-08:00</updated><title type='text'>Paul, I had no idea pyparsing even existed.  I hat...</title><content type='html'>Paul, I had no idea pyparsing even existed.  I hate reinventing the wheel and searched far and wide for parsing tools, but pyparsing never came up.  Now when I Google for "python parsing", I see that pyparsing is the last result on the first page, but I guess my eyes missed it when I looked before.  Shame on me.&lt;BR/&gt;&lt;BR/&gt;I congratulate you on your work.  It looks great.  It's almost what I was trying to accomplish, but certainly more mature.  Had I known about it, I may have used it instead, although I'm glad that I could explore monadic parsing as well.&lt;BR/&gt;&lt;BR/&gt;But, I have some peculiar needs in a parser that I wrote using Pysec.  I'd like to see if pyparsing can do it also, but there's not much documentation that I can find on the wiki.  Would you mind answering a few questions?  You can respond here or direct me to a better place to have a discussion.&lt;BR/&gt;&lt;BR/&gt;Here's what I'm wondering if pyparsing is capable of:&lt;BR/&gt;&lt;BR/&gt;1.  I need to read size-prefixed binary data, much like what's found in the bittorrent format called bencode.  It looks like this:&lt;BR/&gt;&lt;BR/&gt;b7:XXXXXXX&lt;BR/&gt;&lt;BR/&gt;Where each X is a byte.  The parser has to read the 7, parse it, and then read 7 bytes, no matter what they are, and then continue parsing from there.  Can pyparsing do this?  In Pysec, it looks a bit like this:&lt;BR/&gt;&lt;BR/&gt;(match("b") &amp; integer) &gt;&gt; (lambda size : (match(":") &amp; read(size))) &lt;BR/&gt;&lt;BR/&gt;2.  I need something a lot like macro expansion, except that rather then expand the reference into the text of the anchor, I need it to expand into the parsed value of the anchor.  So, for example, I need to parse something that looks like this:&lt;BR/&gt;&lt;BR/&gt;[&amp;a [1, 2, 3], @a, @a]&lt;BR/&gt;&lt;BR/&gt;Into what you would get if you did this in python:&lt;BR/&gt;&lt;BR/&gt;a = [1, 2, 3]&lt;BR/&gt;[a, a, a]&lt;BR/&gt;&lt;BR/&gt;It requires keeping a table of parsed values, but that's easy because a Pysec Parser is really a StateTransformer monad, so we just carry an inner state in around with the ParserState.&lt;BR/&gt;&lt;BR/&gt;Can pyparsing do this?&lt;BR/&gt;&lt;BR/&gt;Thanks in advance Paul.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/2401447663624079621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/2401447663624079621'/><link rel='alternate' type='text/html' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html?showComment=1202945220000#c2401447663624079621' title=''/><author><name>Peter Thatcher</name><uri>http://www.blogger.com/profile/01092342988993218446</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html' ref='tag:blogger.com,1999:blog-1700157236206200597.post-3308933040690383564' source='http://www.blogger.com/feeds/1700157236206200597/posts/default/3308933040690383564' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-855974674'/></entry><entry><id>tag:blogger.com,1999:blog-1700157236206200597.post-1801395264595945154</id><published>2008-02-13T13:50:00.000-08:00</published><updated>2008-02-13T13:50:00.000-08:00</updated><title type='text'>Congratulations on a nice little parsing library. ...</title><content type='html'>Congratulations on a nice little parsing library.  For comparison, here is a pyparsing JSON parser (http://pyparsing.wikispaces.com/space/showimage/jsonParser.py).  It should look very familiar to you! :)&lt;BR/&gt;&lt;BR/&gt;Come visit the pyparsing wiki, the concepts are very similar.  One of the big differences is that your monads are implemented in functions, and pyparsing uses class instances.  By using objects, it is easier to attach additional behavior (such as parse actions and field names) to the parser expression monads.  Also, pyparsing creates a very rich return type, the ParseResults class, instead of just returning nested lists of tokens.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/1801395264595945154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/1801395264595945154'/><link rel='alternate' type='text/html' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html?showComment=1202939400000#c1801395264595945154' title=''/><author><name>Paul McGuire</name><uri>http://pyparsing.wikispaces.com</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html' ref='tag:blogger.com,1999:blog-1700157236206200597.post-3308933040690383564' source='http://www.blogger.com/feeds/1700157236206200597/posts/default/3308933040690383564' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-335752322'/></entry><entry><id>tag:blogger.com,1999:blog-1700157236206200597.post-2541188956477950790</id><published>2008-02-12T21:04:00.000-08:00</published><updated>2008-02-12T21:04:00.000-08:00</updated><title type='text'>How's this different from pyparsing?</title><content type='html'>How's this different from pyparsing?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/2541188956477950790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/2541188956477950790'/><link rel='alternate' type='text/html' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html?showComment=1202879040000#c2541188956477950790' title=''/><author><name>Allen Short</name><uri>http://www.blogger.com/profile/02476178041186364808</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html' ref='tag:blogger.com,1999:blog-1700157236206200597.post-3308933040690383564' source='http://www.blogger.com/feeds/1700157236206200597/posts/default/3308933040690383564' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-340312162'/></entry><entry><id>tag:blogger.com,1999:blog-1700157236206200597.post-5835935813027612882</id><published>2008-02-12T15:56:00.000-08:00</published><updated>2008-02-12T15:56:00.000-08:00</updated><title type='text'>that's really good!! lets kill regular expression ...</title><content type='html'>that's really good!! lets kill regular expression :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/5835935813027612882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1700157236206200597/3308933040690383564/comments/default/5835935813027612882'/><link rel='alternate' type='text/html' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html?showComment=1202860560000#c5835935813027612882' title=''/><author><name>jb</name><uri>http://www.blogger.com/profile/13709249214033017810</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html' ref='tag:blogger.com,1999:blog-1700157236206200597.post-3308933040690383564' source='http://www.blogger.com/feeds/1700157236206200597/posts/default/3308933040690383564' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2067265805'/></entry></feed>
