मैं boost :: spirit :: lex का उपयोग कर एक लेक्सर लिखने पर विचार कर रहा हूं, लेकिन मुझे लगता है कि सभी उदाहरणों को लगता है कि आपने पूरी फ़ाइल को पहले रैम में पढ़ा है। मैं एक लेक्सर लिखना चाहता हूं जिसमें रैम में पूरी स्ट्रिंग की आवश्यकता नहीं है, क्या यह संभव है? या मुझे कुछ और उपयोग करने की ज़रूरत है?Boost :: Spirit :: Lex को पूरी फ़ाइल को स्मृति में पहले बिना पढ़े फ़ाइल को लेक्स का उपयोग कैसे करें?
मैंने आईट्रीम_इटरेटर का उपयोग करने की कोशिश की, लेकिन बढ़ावा मुझे एक संकलन त्रुटि देता है जब तक कि मैं कॉन्स्ट char * को इटरेटर प्रकार के रूप में उपयोग नहीं करता।
उदा। सभी उदाहरण मैं पा सकते हैं मूल रूप से ऐसा करते हैं:
lex_functor_type< lex::lexertl::lexer<> > lex_functor;
// assumes entire file is in memory
char const* first = str.c_str();
char const* last = &first[str.size()];
bool r = lex::tokenize(first, last, lex_functor,
boost::bind(lex_callback_functor(), _1, ...));
इसके अलावा, यह किसी भी तरह लेक्स टोकन से लाइन/स्तंभ संख्या निर्धारित करने के लिए संभव है?
धन्यवाद!
+1, हां, आत्मा प्रलेखन में नए उदाहरण बहुत अच्छे होंगे :) – Viet
मैंने वास्तव में ऐसा किया था। बूस्ट V1.47 में ऐसे टोकन प्रकार और एक नया उदाहरण होगा जो इसका उपयोग कैसे करेगा। – hkaiser
धन्यवाद हर्मुत! नई आत्मा के साथ 1.47 रिलीज को बढ़ावा देने की बहुत उम्मीद है! – Viet