Re: Horrible compiletimes and memory usage while compiling a parser with X3
Peter Gerell <[email protected]>
| Newsgroups | gmane.comp.parsers.spirit.general |
|---|---|
| Message-ID | <[email protected]> |
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); In this short example we could easily work around this issue by not omitting the result of the char_ parser in the start rule or by changing the attribute types to what boost 1.61+ expects In our full code it is not as simple as we rely on the types being unique when traversing the ast using variant visitors. /Peter ------------------------------------------------------------------------------ Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE. Training and support from Colfax. Order your platform today. http://sdm.link/xeonphi