बूस्ट भावना सीखने की कोशिश कर रहा है और दस्तावेज़ों में दिए गए उदाहरण में मुझे थोड़ा उलझन है।बूस्ट स्पिरिट रोमन न्यूमेर पार्सर उदाहरण
इस कोड का जिक्र करते हुए:
http://www.boost.org/doc/libs/1_46_1/libs/spirit/example/qi/roman.cpp
विशेष रूप से व्याकरण के इस खंड:
start = eps [_val = 0] >>
(
+lit('M') [_val += 1000]
|| hundreds [_val += _1]
|| tens [_val += _1]
|| ones [_val += _1]
)
कोई कारण है कि यह + जलाया जाता है ('M') और नहीं * जलाया मेरे लिए समझा सकते हैं ('M')। क्योंकि आखिरकार शून्य या अधिक एम बनाम एक या अधिक एम बनाम नहीं हो सकता है?
* lit ('M') और CCLLIX का उपयोग करना। तो परिणाम 250 वापस क्यों आता है और एलआईक्स पर रुकता है? जैसा कि आपने कहा था, इसे शून्य मैचों के लिए 1000 में _val नहीं जोड़ना चाहिए और सीसीएलआईएलएक्स में एम नहीं है। तो क्या यह 1250 से 250 नहीं लौटाएगा? – Integer
@ इंटेगर: मैंने स्पष्टीकरण जोड़ा। 'CCLLIX' मान्य संख्या नहीं है। – Nawaz
अच्छा पकड़ो। उसके लिए माफ़ करना। लेकिन अगर मैं 25 9 के सही उत्तर में * और + परिणामों का उपयोग कर CCLIX का उपयोग करता हूं।क्यों नहीं * 1259 में परिणाम आप कहते हैं? – Integer