From: Manuel W. <mw...@ma...> - 2005-03-12 17:15:08
|
Hello everyone! While looking for a suitable, human-readable alternative to xml I stumbled (among others) upon yaml. I liked the concept at first glance. I think yaml is in many ways superior to xml. (For one it's not full of angle irons ;-)) However, while there are many implementations for scripting languages, there seems to be no yaml-parser for C/C++. (I understand syck is basically a C parser, but it is mainly geared towards extending scripting languages, and thus does not feature a nice native interface.) I think it is kind of odd that there are XML-parsers abound (a format that I for one have trouble parsing efficiently) whereas there is virtually no decent yaml-parser around. Therefore, the following question: Are there any projects going on converning a c++ yaml parser library? (I heard rumours about libyaml - is it still alive? Or are there plans for a C++ interface for the syck parser?) I would be glad to contribute my time and effort toward such a parsing library, are there any other interested individuals? Cheers M. Woelker |
From: Oren Ben-K. <or...@be...> - 2005-03-15 07:35:17
|
On Saturday 12 March 2005 19:14, Manuel Woelker wrote: > Therefore, the following question: > Are there any projects going on converning a c++ yaml parser library? > (I heard rumours about libyaml - is it still alive? Or are there > plans for a C++ interface for the syck parser?) I have began work on a C based parser that implements the full YAML 1.1 spec. While it does not provide a direct C++ interface, it does offer an "OO-like" C interface and it should be "easy" to wrap it in a nice (and very efficient) C++ wrapper. The reason for using C rather than C++ is that C is more portable in three ways. First, it requires a lot less run-time support, which is important for embedded systems. Second, it is available on more architectures, though admittedly this gap has grown narrower in the last decade. Finally and most importantly, C "plays nice" with every other programming platform. In many cases, simply wrapping it in a dynamically linked library is enough. It is also "easy" to create an efficient wrapper for it interfacing with Java/Perl/Python/Tcl/Ruby/Fortran/Whatever. In contrast, C++ requires a rather large standard library, C++ dynamically linked libraries can only be used with programs compiled with the "same" C++ compiler, and interfacing it with anything else requires wrapping it with an intermediate pure C interface. The parser is hard to write not because I have decided to "go for broke" and provide a streaming pull-based parser, which meant implementing some sort of coroutine-like mechanism. It turns out this is possible in pure ANSI C without resorting to threads or stack copying, if you are willing to resort to some nasty pre-processor stuff. This part is thankfully done, and I began implementing the productions. Then I met with Clark and he convinced me to factor out an "intermediate form" of the productions so that it would be "easy" to create native implementations of the parser in other languages. We have agreed on the basis of such a form (YACC-like rules, using YAML syntax of course :-). Work on the parser comes in bursts. I have spent almost no time at all on it during the last month, but I hope to clear up some time in the next couple of weeks and connect the "intermediate form" with the C parser framework I have ready. Once I get that out of the way, it should be relatively smooth going. > I would be glad to contribute my time and effort toward such a > parsing library, are there any other interested individuals? There's a tricky issue with the parser that I could use help with. Given a parser syntax description in the "intermediate form", I'd like to (1) automatically generate a "complete" set of test cases; (2) prove/test that there's no possible input that, fed to the parser, would cause it to "crash". This requires some tricky combinatorical programming, and possibly a lot of CPU cycles. Anyone interested in helping me out here? Have fun, Oren Ben-Kiki |
From: Brian I. <in...@tt...> - 2005-03-15 21:03:39
|
On 15/03/05 09:34 +0200, Oren Ben-Kiki wrote: > On Saturday 12 March 2005 19:14, Manuel Woelker wrote: > > Therefore, the following question: > > Are there any projects going on converning a c++ yaml parser library? > > (I heard rumours about libyaml - is it still alive? Or are there > > plans for a C++ interface for the syck parser?) > > I have began work on a C based parser that implements the full YAML 1.1 > spec. While it does not provide a direct C++ interface, it does offer > an "OO-like" C interface and it should be "easy" to wrap it in a nice > (and very efficient) C++ wrapper. ... > There's a tricky issue with the parser that I could use help with. Given > a parser syntax description in the "intermediate form", I'd like to (1) > automatically generate a "complete" set of test cases; (2) prove/test > that there's no possible input that, fed to the parser, would cause it > to "crash". This requires some tricky combinatorical programming, and > possibly a lot of CPU cycles. Anyone interested in helping me out here? Oren, The first step is to make your code publicly available. I would be glad to host it on an svn server where I host other projects. I know you like CVS but svn is primetime now and you should take two minutes to install and learn it. But really, open it up! The Perl6 project has a working interpreter and over 1500 tests passing after only 6 weeks of work because the author opened up the project, and made anyone who contributed a meaningful patch have commit access to the repository. Discussion goes on in irc.freenode.net/#perl6 and people contribute constantly. http://www.pugscode.org/ Since we have a way more complete spec, YAML should progress well. Of course Perl6 is more sexy, and not written in C so... Cheers, Brian |
From: Oren Ben-K. <or...@be...> - 2005-03-16 06:48:38
|
On Tuesday 15 March 2005 23:02, Brian Ingerson wrote: > The first step is to make your code publicly available. It is on the same CVS server as the spec. I think it is publicly available, for read-only at least - Clark would know. Have fun, Oren Ben-Kiki |
From: Clark C. E. <cc...@cl...> - 2005-03-16 18:12:26
|
We should move the spec and the code to source forge's CVS. Best, Clark On Wed, Mar 16, 2005 at 08:48:25AM +0200, Oren Ben-Kiki wrote: | On Tuesday 15 March 2005 23:02, Brian Ingerson wrote: | > The first step is to make your code publicly available. | | It is on the same CVS server as the spec. I think it is publicly | available, for read-only at least - Clark would know. | | Have fun, | | Oren Ben-Kiki | | | ------------------------------------------------------- | SF email is sponsored by - The IT Product Guide | Read honest & candid reviews on hundreds of IT Products from real users. | Discover which products truly live up to the hype. Start reading now. | http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click | _______________________________________________ | Yaml-core mailing list | Yam...@li... | https://lists.sourceforge.net/lists/listinfo/yaml-core -- Clark C. Evans Prometheus Research, LLC. http://www.prometheusresearch.com/ o office: +1.203.777.2550 ~/ , mobile: +1.203.444.0557 // (( Prometheus Research: Transforming Data Into Knowledge \\ , \/ - Research Exchange Database /\ - Survey & Assessment Technologies ` \ - Software Tools for Researchers ~ * |
From: Nicolas W. <nw...@iu...> - 2005-04-28 18:44:29
|
Hi everyone, I've been wanting a c++ yaml parser for quite some time now, but never had the time to do something about it. I'd rather program in python, but I have to use C/C++ professionally, so here we go. I couldn't find the source you were talking about on any public server, so I thought, well let's try to hack something really quickly on top of Syck (which is really excellent for all agile languages, but not so friendly with c++). I have a very simple working binding for reading yaml, however I didn't go very far for multiple reasons, such as: - doesn't play nicely with streams - cannot use c++ exceptions and cannot compile syck with g++ either (I could have rewritten that part (syck_st.*), however given that anyway it wouldn't work with c++ streams, I just dropped it) So I thought, now that I have a bit more time, maybe I could help with the C parser, if you could put it somewhere in a public place. Also, if you're still interested in generating all test cases for the "intermediate form" you were talking about, I happen to like a lot algorithmic and combinatorial programming, although this is not what I'm doing full time, so maybe I won't be any help. I'd still like to try it though. Cheers, Nicolas. Oren Ben-Kiki wrote: > On Tuesday 15 March 2005 23:02, Brian Ingerson wrote: > >>The first step is to make your code publicly available. > > > It is on the same CVS server as the spec. I think it is publicly > available, for read-only at least - Clark would know. > > Have fun, > > Oren Ben-Kiki > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Yaml-core mailing list > Yam...@li... > https://lists.sourceforge.net/lists/listinfo/yaml-core > > |
From: Oren Ben-K. <or...@be...> - 2005-04-30 17:29:41
|
On Thursday 28 April 2005 21:44, Nicolas Wack wrote: > I couldn't find the source you were talking about on any public > server, so I thought, well let's try to hack something really quickly > on top of Syck (which is really excellent for all agile languages, > but not so friendly with c++). I have a very simple working binding > for reading yaml, however I didn't go very far for multiple reasons, > such as: - doesn't play nicely with streams > - cannot use c++ exceptions and cannot compile syck with g++ either > (I could have rewritten that part (syck_st.*), however given that > anyway it wouldn't work with c++ streams, I just dropped it) I'll check in some stuff I'm in the middle of and get Clark to open access to it (maybe on sourceforge) by the next weekend. Note, however, it is pure ANSI C. It doesn't, by itself, play nice with C++ exception and I/O streams. This was a deliberate design choice meant to ensure it is as portable as possible (C++ still lags behind C in this respect). > So I thought, now that I have a bit more time, maybe I could help > with the C parser, if you could put it somewhere in a public place. > Also, if you're still interested in generating all test cases for the > "intermediate form" you were talking about, I happen to like a lot > algorithmic and combinatorial programming, although this is not what > I'm doing full time, so maybe I won't be any help. I'd still like to > try it though. That would be _great_. Lets discuss this when I open the version control back. In essence there are two types of automatic generated tests I want to see - one set to fully exercise the "valid YAML" parsing paths, and another to verify all possible "invalid YAML" recovery paths. This is tricky to get right... Have fun, Oren Ben-Kiki |
From: Brian I. <in...@tt...> - 2005-03-16 19:32:50
|
On 16/03/05 13:12 -0500, Clark C. Evans wrote: > We should move the spec and the code to source forge's CVS. God no, please. Let's talk on irc. > > Best, > > Clark > > On Wed, Mar 16, 2005 at 08:48:25AM +0200, Oren Ben-Kiki wrote: > | On Tuesday 15 March 2005 23:02, Brian Ingerson wrote: > | > The first step is to make your code publicly available. > | > | It is on the same CVS server as the spec. I think it is publicly > | available, for read-only at least - Clark would know. > | > | Have fun, > | > | Oren Ben-Kiki > | > | > | ------------------------------------------------------- > | SF email is sponsored by - The IT Product Guide > | Read honest & candid reviews on hundreds of IT Products from real users. > | Discover which products truly live up to the hype. Start reading now. > | http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > | _______________________________________________ > | Yaml-core mailing list > | Yam...@li... > | https://lists.sourceforge.net/lists/listinfo/yaml-core > > -- > Clark C. Evans Prometheus Research, LLC. > http://www.prometheusresearch.com/ > o office: +1.203.777.2550 > ~/ , mobile: +1.203.444.0557 > // > (( Prometheus Research: Transforming Data Into Knowledge > \\ , > \/ - Research Exchange Database > /\ - Survey & Assessment Technologies > ` \ - Software Tools for Researchers > ~ * > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Yaml-core mailing list > Yam...@li... > https://lists.sourceforge.net/lists/listinfo/yaml-core |