|
Boost Users : |
Subject: Re: [Boost-users] [Spirit/Qi/Phoenix] non compiling rules...
From: Francois Mauger (mauger_at_[hidden])
Date: 2013-12-12 15:01:50
Hi
>>On 12/12/2013 20:13, Michael Caisse wrote:
> On 12/12/2013 10:47 AM, Francois Mauger wrote:
>>>>> On 12/12/2013 15:24, TONGARI J wrote:
>>
>> However I don't understand the "()" after the "std::vector<char>". what
>> does it mean ? Does it refer to the std::vector constructor ?
>
> It is function declaration syntax. It is specifying a function that
> returns a std::vector<char> and takes no parameters. Qi uses this syntax
> to specify what the rule will synthesize (produce or return) and the
> inherited parameters (arguments to the rule).
>
ok. now that's clearer (while the syntax is rather obfuscating)
> Attribute parsing is the way to go. Avoid semantic actions as much as
> possible. Parse into a data structure and then post process that
> structure if needed. Foo might be a tuple or it might be some complex,
> recursive data structure... it will depend on what you are parsing.
well, this will be my approach after this first discovery round. I like
it because post-processing will give me more freedom to manipulate the
sink object.
>
> Perhaps this will help some.
>
> slides: http://ciere.com/boostcon10/index.html
I know this (good) tutorial (yours... congratulation!).
unfortunately I was really confused by the example with
BOOST_FUSION_ADAPT_CLASS_NAMED in a first attempt to bind one of my
class with Spirit/Qi/karma. I cannot find this macro in Boost 1.53.
But see:
<pre>
$ tail -3 boost/version.hpp
#define BOOST_LIB_VERSION "1_53"
#endif
$ tail -3 boost/fusion/include/adapt_assoc_class.hpp
#include <boost/fusion/adapted/class/adapt_assoc_class.hpp>
#endif
$ ls boost/fusion/adapted/class/adapt_assoc_class.hpp
ls: cannot access boost/fusion/adapted/class/adapt_assoc_class.hpp: No
such file or directory
</pre>
Seems something is broken or badly cleaned in new versions of Boost.
Then I found some *_AST_* macros. But it is too early for me to
fight with it. I have found almost no simple examples to use it.
Now I realize that AST probably refers to Abstract Syntax Tree and a
probably a new underlying technique used in Spirit...
Many thanks for your help.
frc
-- François Mauger Groupe "Interactions Fondamentales et Nature du Neutrino" NEMO-3/SuperNEMO Collaboration LPC Caen-CNRS/IN2P3-UCBN-ENSICAEN Département de Physique -- Université de Caen Basse-Normandie Adresse/address: Laboratoire de Physique Corpusculaire de Caen (UMR 6534) ENSICAEN 6, Boulevard du Marechal Juin 14050 CAEN Cedex FRANCE Courriel/e-mail: mauger_at_[hidden] Tél./phone: 02 31 45 25 12 / (+33) 2 31 45 25 12 Fax: 02 31 45 25 49 / (+33) 2 31 45 25 49
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net