Ceci est une question de suivi d’ une question précédente . Je peux parsingr des vecteurs de chaînes de ma grammaire, mais je n’arrive pas à parsingr un vecteur de pointeurs partagés sur des chaînes ; c.-à-d. std::vector<std::shared_ptr > besoin d’un peu d’aide. Mon en-tête de compilation: #define BOOST_SPIRIT_USE_PHOENIX_V3 1 #include #include #include #include #include […]
J’ai commencé à apprendre Boost.Spirit et à finir de lire la section Qi – Writing Parsers . Lors de la lecture, tout est facile et compréhensible. Mais lorsque j’essaie de faire quelque chose, il y a beaucoup d’erreurs, car il y a trop d’inclusions et d’espaces de noms et j’ai besoin de savoir quand les […]
Dans la documentation boost :: spirit, les grammaires sont définies à l’aide de struct. Par exemple, template struct my_grammar : qi::grammar<Iterator, qi::locals, ascii::space_type > { my_grammar() : my_grammar::base_type(start, “start”) { // using this and that // rules and action etc. } }; Je me demande si je peux l’écrire en utilisant la classe (sinon pourquoi?). […]
Je reçois cette erreur: include / boost / spirit / home / phoenix / bind / detail / member_function_ptr.hpp: 109: 35: pas de conversion viable de ‘boost :: spirit :: saved_type’ à ‘const std :: __ 1: : basic_ssortingng ‘ #define BOOST_SPIRIT_USE_PHOENIX_V3 #define spirit boost::spirit #define phoenix boost::phoenix component_ = lit( ‘-‘ ) >> ssortingng_[ […]
Je fais un parsingur de messages IRC avec Boost.Spirit mais une erreur (très longue) s’affiche lorsque j’essaie d’parsingr une entrée. J’ai suivi l’exemple des ” chiffres romains “. De plus, j’utilise g++4.7 avec -std=c++11 . L’erreur se produit uniquement lorsque j’appelle phrase_parse() sur test.cpp , et non lorsque je test.cpp une instance de message_grammar . […]
Comment puis-je append des avertissements dans l’parsingur d’esprit boost? Edit: … qui pourrait signaler le problème avec la position Par exemple, si j’ai un parsingur entier: (‘0′ >> oct) | int_ J’aimerais pouvoir faire quelque chose comme ça: (‘0’ >> oct) | “-0” –> sortinggger warning(“negative octal values are not supported, it will be interpreted […]
Je suis encore nouveau dans l’esprit Boost. J’essaie d’parsingr une chaîne avec des espaces de début et de fin possibles et des espaces intermédiaires. Je veux faire ce qui suit avec la chaîne Supprimer tout espace blanc de fin et de début Limiter les espaces de mots intermédiaires à un espace blanc Par exemple “( […]
Je suis relativement nouveau dans Spirit Qi et j’essaye d’parsingr un langage qui ressemble à un assembleur. Par exemple, j’aimerais parsingr: Func Ident{ Mov name, “hello” Push 5 Exit } Jusqu’ici tout va bien. Je peux parsingr correctement. Cependant, le gestionnaire d’erreurs présente parfois des emplacements d’erreur étranges. Prenons par exemple le code défectueux suivant: […]
J’ai un peu joué avec le code chez link et j’ai une autre question. J’ai ajouté une action sémantique à: action = actions_ >> ‘(‘ >> parameters >> ‘)'[ /* semantic action placed here */]; je peux donc réutiliser la règle avec la vérification à plusieurs endroits. Le problème est qu’alors l’esprit cesse de propager […]
Un simple eol ne devrait-il pas faire l’affaire? #include #include #include #include using boost::spirit::ascii::space; using boost::spirit::lit; using boost::spirit::qi::eol; using boost::spirit::qi::phrase_parse; struct fix : std::unary_function { fix(std::ssortingng &result) : result(result) {} void operator() (char c) { if (c == ‘\n’) result += “\\n”; else if (c == ‘\r’) result += “\\r”; else result += c; } […]