Re: Not able to use x3::skip(skipper)[some recursive rule] in its rule definition

Han Wang <[email protected]>
Newsgroups gmane.comp.parsers.spirit.general
Message-ID <CAPDNnCaqDDAu9CbvvistX1B=x+CgrdirOxJ9LezcqEvrrKQC8w@mail.gmail.com>
Hi Larry,

I think we cannot just change make_context to make_unique_context here in
x3::skip_directive. If there already is a skipper in the context (x3::space
e.g), the new skipper (ruleComment) will be ignored (because
x3::make_unique_context will simply return the original context).

Best regards,
Han

On Tue, Jul 25, 2017 at 4:02 PM, Larry Evans <[email protected]>
wrote:

> On 07/25/2017 07:43 AM, Han Wang wrote:
>
>> Hi Larry,
>>
>> Thanks. I've tried this get_rhs branch but it doesn't solve this problem.
>> Still get the same error.
>>
>> Best regards,
>> Han
>>
>> [snip]
>
> OPPS.  Sorry about that.  I should have read where you say in OP:
>
> it will generate an infinite context (by x3::make_context in
> x3::skip_directive).
>
> I just saw the x3::make_context and remembered that was causing
> long compile times.  There's a make_unique_context which
> avoids the infinite recursion.  When that's applied, as shown here:
>
> https://github.com/cppljevans/spirit/blob/get_rhs/include/bo
> ost/spirit/home/x3/directive/skip.hpp#L40
>
> Compile succeeds fast:
>
> make compile
> time /home/evansl/dwnlds/llvm/3.9/prebuilt/clang+llvm-3.9.0-x86_6
> 4-linux-gnu-ubuntu-16.04/bin/clang++ -c -O0 -stdlib=libc++  -std=c++1z
> -ftemplate-backtrace-limit=0 -fdiagnostics-show-template-tree
> -fno-elide-type -fmacro-backtrace-limit=0     -c -std=c++14
> -ftemplate-depth=1024 -I/home/evansl/prog_dev/boost/
> releases/ro/boost_1_64_0/sandbox/pull_requests/context_debug_fix.fork/spirit/include
> -I/home/evansl/prog_dev/boost/releases/ro/boost_1_64_0
> -DBOOST_SPIRIT_GET_RHS_CRTP=0 -DBOOST_SPIRIT_ATTR_XFORM_IN_RULE=0
> main.cpp
> In file included from main.cpp:7:
> In file included from /home/evansl/prog_dev/boost/re
> leases/ro/boost_1_64_0/sandbox/pull_requests/context_debug_
> fix.fork/spirit/include/boost/spirit/home/x3.hpp:17:
> In file included from /home/evansl/prog_dev/boost/re
> leases/ro/boost_1_64_0/sandbox/pull_requests/context_debug_
> fix.fork/spirit/include/boost/spirit/home/x3/nonterminal.hpp:10:
> /home/evansl/prog_dev/boost/releases/ro/boost_1_64_0/sandbox
> /pull_requests/context_debug_fix.fork/spirit/include/boost/
> spirit/home/x3/nonterminal/rule.hpp:18:11: warning:
>       deprecated. May cause link error when using
> BOOST_SPIRIT_INSTANTIATE. [-W#pragma-messages]
>   #pragma message "deprecated.  May cause link error when using
> BOOST_SPIRIT_INSTANTIATE."
>           ^
> /home/evansl/prog_dev/boost/releases/ro/boost_1_64_0/sandbox
> /pull_requests/context_debug_fix.fork/spirit/include/boost/
> spirit/home/x3/nonterminal/rule.hpp:22:11: warning:
>       deprecated. May cause excessive compile times when many rules.
> [-W#pragma-messages]
>   #pragma message "deprecated.  May cause excessive compile times when
> many rules."
>           ^
> 2 warnings generated.
>
> real    0m2.351s
> user    0m1.372s
> sys     0m0.072s
>
> Compilation finished at Tue Jul 25 08:53:02
>
>
> HTH.
>
> -regards,
> Larry
>
>
>
>
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Spirit-general mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/spirit-general
>

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot

_______________________________________________
Spirit-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/spirit-general
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.