में उपयोग के लिए कार्यान्वयन के लिए मैं अभी भी सी ++ के लिए थोड़ा नया हूं इसलिए मेरे साथ भालू। मैं एक बीएनएफ व्याकरण द्वारा वर्णित कोर नामक एक कल्पित भाषा के लिए एक दुभाषिया लागू कर रहा हूं। अब तक मैंने एक टोकननाइज़र लागू किया है जो मुझे कोर प्रोग्राम का प्रतिनिधित्व करने वाले टोकन की एक अच्छी कतार देता है। अब मैं पार्सर/एक्सेक्यूटर लिखने की प्रक्रिया में हूं जो टोकननाइज़र से आउटपुट लेता है और रिकर्सिव वंश पार्सिंग का उपयोग करके पारसी ट्री क्लास (जिसे मुझे डिजाइन करना है) के ऑब्जेक्ट को पॉप्युलेट करने के लिए इसका उपयोग करता है। मैं इसे कैसे करना है इसके बुनियादी सिद्धांतों को समझता हूं लेकिन पारसीट्री कक्षा को लागू करने में परेशानी हो रही है। कोर बीएनएफ द्वारा वर्णित प्रोडक्शंस में आमतौर पर 2-5 टर्मिनल/गैर-टर्मिनल प्रतीकों होते हैं लेकिन कुछ में 20 तक हो सकते हैं इसलिए मुझे एक एन-आरी पेड़ की आवश्यकता होती है जहां प्रत्येक नोड में बच्चों की एक अलग संख्या हो सकती है।सी ++ एन-आरी पेड़ कार्यान्वयन रिकर्सिव वंश पार्सिंग
मुझे लगता है कि पारसीट्री कक्षा को इसके कार्यान्वयन के लिए एक पेड़ का उपयोग करने की आवश्यकता नहीं है, लेकिन ऐसा लगता है कि यह सबसे अधिक समझ में आता है (क्या कोई अलग डेटा संरचना है जो बेहतर/आसान हो सकती है?)। मैं एसटीएल में किसी भी कंटेनर से अवगत नहीं हूं जो मुझे आवश्यकतानुसार बिल फिट बैठता है। मैंने बूस्ट संपत्ति के पेड़ को देखा है लेकिन मैं जो कह सकता हूं उससे वह काम नहीं करेगा। मैं पहिया को फिर से शुरू नहीं करना चाहता हूं और यदि संभव हो तो खरोंच से पेड़ को लागू करना पसंद नहीं करता। इसके अलावा, मैं बूस्ट से अलग बाहरी पुस्तकालयों का उपयोग करने में सक्षम नहीं होने के कारण सीमित हूं। मेरे पारसी ट्री को लागू करने का सबसे अच्छा तरीका क्या है? क्या कोई अच्छा प्री-पेड़ वृक्ष कार्यान्वयन मैं उपयोग कर सकता हूं?
आपका प्रश्न है डेटा संरचनाओं के बारे में, पुनरावर्ती मूल पार्सिंग नहीं। – EJP