First, you should use Boost Trunk, it compiles quite noticeably faster.
Second, look in the Spirit examples directly with Boost Trunk, in the
QI subdirectory, the mini_c directory has an example of just that.
I cant use use boost trunk, in order to get faster compiles, since I have
to use
boost1.38/1.39. Also it looks like the grammar construction in the
examples
is different. I looked for a similar example in boost 1.39 since we use
closures
but none exists.
Surely anyone who is using spirit and building on multiple platforms must
be
be affected with this bug ?
Best regards.
Avi
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Message: 4
Date: Mon, 20 Jul 2009 10:37:57 +0100
From: Avi Bahra
Subject: [Boost-users] Spirit 1.39 compilation times
To: boost-users@lists.boost.org
Message-ID:
Content-Type: text/plain; charset="iso-8859-1"
I am using boost spirit 1.39. On gcc the compilation times are acceptable.
However on AIX with v10.1 compiler, it fails to even compile. After 24hrs
waiting, I gave up.
Ok I realise that the grammer needs to split. Is there any _small_
examples out there, that demonstrates this technique for a beginner ?
In my case I have one grammer and ~70 rules.
Take the following rule:
rule identifier ;
identifier
= lexeme_d [ (alnum_p || ch_p('_')) >> *(alnum_p ||
ch_p('_')) ]
[ identifier.name =
construct_std::string(arg1, arg2) ]
;
What is the technique for converting it into a grammer, that is separately
compiled ?
Also how would I reference it again, without including the header file, from
another rule
dotPath
= ( str_p(".")
>> +(
str_p("/")
>> identifier
)
)
[ dotPath.name = construct_std::string(arg1, arg2) ]
;
Any help would greatly appreciated.
Best regards,
Ta,
Avi