मैं बढ़ावा के बारे में एक गहरी प्रशंसा के बीच में हूँ :: भावना और अनन्त निराशा इसे समझने की नहीं;)बूस्ट भावना भी लालची है
मुझे लगता है कि बहुत लालची हैं तार के साथ समस्या है और इसलिए यह मेल नहीं खाता । एक न्यूनतम उदाहरण के नीचे जो txt नियम के रूप में पार्स नहीं करता है अंत तक खाता है।
मैं जो करना चाहता हूं उसके बारे में अधिक जानकारी: लक्ष्य कुछ छद्म-एसक्यूएल को पार्स करना है और मैं सफेद जगहों को छोड़ना चाहता हूं।
select foo.id, bar.id from foo, baz
मुझे एक विशेष कीवर्ड के रूप में from
का इलाज करने की आवश्यकता है। नियम
"select" >> txt % ',' >> "from" >> txt % ','
की तरह कुछ है, लेकिन यह एक आइटम के रूप में देखता है bar.id from foo
में यह स्पष्ट रूप से काम नहीं करता।
#include <boost/spirit/include/qi.hpp>
#include <iostream>
namespace qi = boost::spirit::qi;
int main(int, char**) {
auto txt = +(qi::char_("a-zA-Z_"));
auto rule = qi::lit("Hello") >> txt % ',' >> "end";
std::string str = "HelloFoo,Moo,Bazend";
std::string::iterator begin = str.begin();
if (qi::parse(begin, str.end(), rule))
std::cout << "Match !" << std::endl;
else
std::cout << "No match :'(" << std::endl;
}
धन्यवाद! यह लेक्सम वह चीज थी जो मैं याद कर रहा था। आप रिक्त स्थान जोड़ने के लिए पूरी तरह से सही थे (मैंने उन्हें कुछ कम करने की कोशिश में उदाहरण में छोड़ दिया, लेकिन मुझे लगता है कि यह किसी भी चीज़ से अधिक भ्रमित था) –
भाग्यशाली अनुमान;) धन्यवाद। – phooji