Re: Horrible compiletimes and memory usage while compiling a parser with X3

Larry Evans <[email protected]>
Newsgroups gmane.comp.parsers.spirit.general
Message-ID <[email protected]>
On 11/13/2016 02:53 PM, Larry Evans wrote:
> On 11/13/2016 07:50 AM, Larry Evans wrote:
>> On 11/07/2016 02:44 AM, Peter Gerell wrote:
>>> On 07/11/2016 12:38 PM , Joel de Guzman wrote:
>>>> On 07/11/2016 1:26 AM, Mikael Asplund wrote:
>>>>> This is the reason we're still on 1.60 (with a small
>>>>> const-patch from 1.61), since later version have link problems which are just too hard
>>>>> to debug.
>>>
>>>> It would be great if you post a test file that exhibits this problem you mention.
>>>> This linking problem doesn't look good and must be fixed.
>>>
>>> Hi Joel.
>>> This is the problem Mikael is referring to.
>>> http://melpon.org/wandbox/permlink/X8Awj4wIZ2JqMWIw
>>>
>>> If KEEP_CHAR is defined the code builds with both boost 1.60 and 1.61.
>>> Without KEEP_CHAR it fails with 1.61.
>>>
>>> The following commit introduced the problem.
>>> https://github.com/boostorg/spirit/commit/a8e391bd99dddb3f9ece84bdb1bb9236b0a37cf7
>>>
>>> The problem seems to be that the attribute types are short-circuited for sequences of one
>>> even though we explicitly request a specific binding using FUSION_DEFINE_FOR_STRUCT(ast::Start, count);
>> [snip]
>>
>> More specifically, the change on line 178 causes the
>> problem.
> [snip]
>> Why not revert the change on detail/sequence.hpp:178 to
>> solve the problem?
>
> Or instead of:
>
> https://github.com/boostorg/spirit/blob/boost-1.61.0/include/boost/spirit/home/x3/operator/detail/sequence.hpp#L178
>
> why not make the bool value dependent on whether R is *not* a rule?
> A similar change would be made to:
>
> https://github.com/boostorg/spirit/blob/boost-1.61.0/include/boost/spirit/home/x3/operator/detail/sequence.hpp#L198
>
> WARNING: not tested.
>
OR, try the spirit rule.hpp patches here:

https://github.com/cppljevans/spirit/blob/ExagonLinkingError/include/boost/spirit/home/x3/nonterminal/rule.hpp#L129

When run with the modification of your problem code here:

https://github.com/cppljevans/boost_1_61_problem

there's no link error.  Fortunately, this change also solves
the problem which Exagon was having:

https://sourceforge.net/p/spirit/mailman/message/35502917/

HTH.

-regards,
Larry




------------------------------------------------------------------------------
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.