Re: [boost] Re: Spirit and typeof [was typeof]

Joel de Guzman wrote:
Arkadiy Vertleyb wrote:
"Joel de Guzman" wrote
I'd like to start a new CVS branch for typeof/auto experimentations. This would involve not only Spirit but Phoenix as well. I have a feeling that this will take more than a week or two. Yet, I'm sure that the results would be gratifying, at the very least.
Actually, I do think that this should be done fast, since it is intended to close the gap (maybe a year or two) until the real typeof becomes available.
Agreed. Let's do it!
I would also like to help, as I think that Spirit is an awesome library/tool and would benefit greatly with auto/typeof support. One question though: I have a parser where I have created several external grammars to help modularize the grammar and employ the trick suggested in the techniques section (c.f. sub-grammar): using namespace boost::spirit; struct identifier_parser: public sub_grammar< identifier_parser > { public: typedef sequence_t < alternative< alpha_parser, chlit<> >, kleene_alternative_t< alnum_parser, chlit<> >::type >::type start_t; public: start_t start; public: inline identifier_parser(): start ( ( alpha_p | '_' ) >> *( alnum_p | '_' ) ) { } } identifier; NOTE: This is using various type construction helpers. Once you have a (sub-)rule like this, you can use it like: rule_t<ScannerT> tagName = !( identifier >> ':' ) >> identifier; I was wondering if this would cause any major problems when implemented with the typeof/auto hack (since it could then be implemented as a grammar). Regards, Reece _________________________________________________________________ Tired of 56k? Get a FREE BT Broadband connection http://www.msn.co.uk/specials/btbroadband

"Reece Dunn" <msclrhd@hotmail.com> wrote
One question though: I have a parser where I have created several external grammars to help modularize the grammar and employ the trick suggested in the techniques section (c.f. sub-grammar):
using namespace boost::spirit;
struct identifier_parser: public sub_grammar< identifier_parser > { public: typedef sequence_t < alternative< alpha_parser, chlit<> >, kleene_alternative_t< alnum_parser, chlit<> >::type >::type start_t; public: start_t start; public: inline identifier_parser(): start ( ( alpha_p | '_' ) >> *( alnum_p | '_' ) ) { } } identifier;
NOTE: This is using various type construction helpers.
Once you have a (sub-)rule like this, you can use it like:
rule_t<ScannerT> tagName = !( identifier >> ':' ) >> identifier;
I was wondering if this would cause any major problems when implemented with the typeof/auto hack (since it could then be implemented as a grammar).
I think you would just have to register your identifier_parser class. The typeof system then would treat it as an atom and not care what is behind it. Regards, Arkadiy
participants (2)
-
Arkadiy Vertleyb
-
Reece Dunn