Hello Abel and Christophe - First off, thank you Abel for submitting such an amazing library. The quality of the documentation and code is wonderful and it has been a pleasure to review Metaparse. Thank you Christophe for taking time to act as a review manager. I reviewed Abel's updated version that follows the newer modular layout: https://github.com/sabel83/metaparse I used the documentation link that was originally posted. On 05/19/2015 02:39 PM, Christophe Henry wrote:
And a very complete tutorial:
http://abel.web.elte.hu/mpllibs/metaparse/getting_started.html
The tutorial also offers the nice feature of a link to metashell for quick-starting trying out the library:
I had some trouble using the on-line version of metashell. It kept timing out. I downloaded a recent version and struggled with the setup for a bit trying to get the include paths correct. Metashell is a very neat utility; however, you might want to add a quick start appendix for using Metashell (local version) with Metaparse considering the examples are illustrated using the tool.
Boost.Msm v3 also implements a new compile-time strings based front-end called eUML2 to demonstrate the power of the library and the conciseness and expressiveness it allows. Please have a look at the documentation:
https://htmlpreview.github.io/?https://raw.githubusercontent.com/boostorg/ms...
Christophe, this is wonderful work and a great example of the usefulness of Metaparse. Can you comment on the compile time compared to eUML? I perused the implementation of eUML2 as an example of using Metaparse in a "real" program. The code is very readable. Kudos!
- What is your evaluation of the design?
- Looks clean and what one might expect for a TMP library needing to support C++-98 compilers.
- What is your evaluation of the implementation?
- When renaming macros, please don't just change/replace MPLLIBS to BOOST. There are several (all?) (MPLLIBS_STRING, MPLLIBS_DEFINE_ERROR, ...) where this isn't going to work. Perhaps BOOST_MPARSE_ would be a good replacement. I'm not opposed to BOOST_METAPARSE_. - Helper include files are nice. metaparse/all.hpp or something like that. I find when I an first working out a solution that having everything included allows me to just concentrate on the grammar details. The calculator_with_parens_and_unary_ops example has 16 individual metaparse includes!
- What is your evaluation of the documentation?
Excellent Getting Started! I believe others have also mentioned the "...>" prompt in the metashell examples results in some initial confusion. I found the User Manual and the Library reference approachable and well written. I only briefly looked through the Tutorial. Nice job on the documentation. Refreshing!
- What is your evaluation of the potential usefulness of the library?
I believe that this library could be very useful in making cleaner interfaces for other libraries. I see it as a tool in creating libraries like MPL or Fusion -- a tool that can be employed to create a more natural interface. I'm looking forward to trying it out.
- Did you try to use the library?
Just the examples and modified versions of those.
- With what compiler?
gcc 5.1
- Did you have any problems?
Jamfiles had to be modified to force c++11 mode and a larger template depth.
- How much effort did you put into your evaluation? A glance? A quick reading? In-depth study?
~ 8-hours
- Are you knowledgeable about the problem domain?
No. I believe metaparse should be accepted as a Boost library! Best regards - Michael -- Michael Caisse ciere consulting ciere.com