
Joel de Guzman wrote:
Kirit Sælensminde wrote: I suggest porting the parser to Spirit2. It is so much faster and flexible. Attribute handling of recursive types is built-in. Your grammars will be a lot better and simpler.
Sounds great. Is it part of Boost yet? So far I've not done any optimisation (actually the only thing I think I want to do is to be able to parse directly from an istream and to print directly to an ostream). I've also not added in the error checking in the grammar so the error messages aren't very helpful -- it basically amounts to "unknown parse error". Should be holding off doing these things until I can use Spirit 2? I don't really want to do it twice.
I'll be accepting a set of (peer reviewed) reusable grammars as part of Spirit2 distrib. I'd be interested in having a JSON grammar. OvermindDL1's grammar is a good candidate. It would be super if you both can iron out the details.
I also have another couple of parsers that I've been working on that are nowhere near finished yet. There is a host name parser at: http://svn.felspar.com/public/fost-base/branches/inet/Cpp/include/fost/parse... Which should parse machine names like: miro miro.felspar.net 10.0.2.32 2130706433 I've not added ipv6 to it yet, and whether you really want the final "raw ipv4 number" or not is maybe a matter of some debate. There's also the start of a URL parser: http://svn.felspar.com/public/fost-base/branches/inet/Cpp/include/fost/parse... The 3 members to a closure limit is killing me on that one though :) There's probably a smarter way of going about it. At some point I'm also going to have to build something for a MediaWiki like markup syntax. My current recursive descent parser is a mess :( K