[Spirit] Qi Symbols mapping to AST enum
Hello, I've got a qi::symbols capturing some built-in types. At the moment, I gather, they are mapped to std::string. However, I would rather map them to an AST level enum. For instance, struct builtin_type_t : qi::symbols<char, std::string> { builtin_type_t() { this->add("double", "double") ("float", "float") // ... ; } } builtin_type; Instead, namespace ast { enum type_t { type_double, type_float /* , ... */ }; } struct builtin_type_t : qi::symbols<char, ast::type_t> { builtin_type_t() { this->add("double", ast::type_double) ("float", ast::type_float) // ... ; } } builtin_type; I assume this is possible? Am I missing something about that? Thanks! Michael Powell
They do exactly that in the examples, https://github.com/boostorg/spirit/blob/develop/example/qi/compiler_tutorial... ________________________________ From: Boost-users <boost-users-bounces@lists.boost.org> on behalf of Michael Powell via Boost-users <boost-users@lists.boost.org> Sent: 28 November 2018 23:36 To: boost-users@lists.boost.org Cc: Michael Powell Subject: [Boost-users] [Spirit] Qi Symbols mapping to AST enum Hello, I've got a qi::symbols capturing some built-in types. At the moment, I gather, they are mapped to std::string. However, I would rather map them to an AST level enum. For instance, struct builtin_type_t : qi::symbols<char, std::string> { builtin_type_t() { this->add("double", "double") ("float", "float") // ... ; } } builtin_type; Instead, namespace ast { enum type_t { type_double, type_float /* , ... */ }; } struct builtin_type_t : qi::symbols<char, ast::type_t> { builtin_type_t() { this->add("double", ast::type_double) ("float", ast::type_float) // ... ; } } builtin_type; I assume this is possible? Am I missing something about that? Thanks! Michael Powell _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org https://lists.boost.org/mailman/listinfo.cgi/boost-users
participants (2)
-
Michael Powell
-
rmawatson rmawatson