एक्सकोड जानता है कि yacc और flex फ़ाइलों को कैसे संसाधित करना है, और स्वचालित रूप से जेनरेट की गई कोड फ़ाइलों को आपके प्रोजेक्ट में संकलित कर देगा। चाल यह पता लगा रही है कि कौन से एक्सटेंशन की अपेक्षा है। एक्सकोड 4 में, प्रोजेक्ट सेटिंग्स प्राप्त करने के लिए स्रोत सूची में शीर्ष-स्तरीय आइटम पर क्लिक करें। अगली सूची में अपने लक्ष्य पर क्लिक करें, फिर तालिका दृश्य शीर्षलेख में नियम बनाएं। "सिस्टम लेक्स नियम" और "सिस्टम Yacc नियम" पर नीचे स्क्रॉल करें, फिर उस नियम के लिए उपयोग किए जाने वाले एक्सटेंशन के साथ टूल टिप प्राप्त करने के लिए उनमें से प्रत्येक में "स्रोत फ़ाइलों" पर कर्सर को होवर करें। (? ... क्या यही कारण है कि स्पष्ट नहीं था)
लेक्स के लिए, यह है: * .l * .lm * .lmm * .lpp * .lp * .lxx
Yacc के लिए, यह है: * .y * .ym * .ymm * .ypp * .yp * .yxx
यदि आपके पास अपने लेक्स/yacc फ़ाइलों में कोई उद्देश्य-सी कोड है, तो आपको जेकोड उत्पन्न करने के लिए एक्सकोड एक्सटेंशन का उपयोग करने की आवश्यकता होगी एक एमएम फ़ाइल; इसी तरह,। एमएम उद्देश्य-सी ++ के लिए। (मुझे अनुमान है।? पीपी,।? पी, और।? Xx सभी सी ++ हैं।) जो मैंने देखा है, यह सिर्फ काम करता है, मेकफ़ाइल की आवश्यकता नहीं है। यदि आप .flex एक्सटेंशन रखना चाहते हैं, तो आप लेक्स नियम में "लक्ष्य पर कॉपी करें" बटन पर क्लिक कर सकते हैं और उस एक्सटेंशन के लिए एक नया नियम बना सकते हैं।
अब "मजेदार" हिस्सा आपके कोड में yacc को एकीकृत करने का प्रयास कर रहा है। डिफ़ॉल्ट रूप से, yyparse() फ़ंक्शन जो पूरी चीज बनाता है, एसटीडीआईएन से इनपुट की अपेक्षा करता है जब तक कि आप इसे अन्यथा काम करने के लिए हुप्स के गुच्छा से कूद न जाएं। यदि आप yacc का उपयोग करने पर मृत-सेट हैं, तो वेब पर बहुत सारी जानकारी है कि इसे अपने सनकी पर कैसे मोड़ना है। लेकिन यदि आप आधुनिक पार्सर जेनरेटर जैसे lemon का उपयोग करते हैं तो आप अपने माथे पर कम कीबोर्ड डेंट्स के साथ हवादार हो सकते हैं। सिंटैक्स yaccs पर आधारित है, और यह एलएएलआर (1) है (जो भी इसका मतलब है) तो बदलाव के बारे में जो कुछ भी आप जानते हैं/संघर्ष को कम करते हैं, अभी भी है। मुझे yacc/flex से काम करना बहुत आसान लगता है।
संपादित करें: मुझे याद है कि एक्सकोड ने स्वचालित रूप से बिल्ड चरण में .l फ़ाइल नहीं जोड़ा है, लेकिन यह .y फ़ाइल जोड़ता है। एक्सकोड स्रोत सूची में शीर्ष-स्तरीय आइटम पर क्लिक करके अपने निर्माण चरणों की जांच करें, आप लक्ष्य पर क्लिक करें, बिल्ड चरण तालिका शीर्षलेख पर क्लिक करें, फिर संकलन स्रोत पंक्ति का विस्तार करें। यदि आपकी .l फ़ाइल वहां नहीं है, तो उसे स्रोत सूची से खींचें।
'स्रोत कोड।yacc' एक्सकोड द्वारा समर्थित फ़ाइल प्रकारों में से एक है। यदि आप एक्सकोड की Info.plist खोलते हैं, तो आपको Yacc (Bison) स्रोत फ़ाइलों के लिए मान्यता प्राप्त एक्सटेंशन की सूची दिखाई देगी; उनमें से एक है 'वाईएम'। –
जानना अच्छा है, लेकिन यह काफी नहीं है जिसे मैं "दस्तावेज" कहता हूं। :-) –
उह ठीक है, लेकिन अगर मैं सिर्फ फ्लेक्स का उपयोग करना चाहता हूं तो क्या होगा? क्या फ्लेक्स बॉक्स डब्ल्यू/एक्सकोड से समर्थित है? मैं एक नौसिखिया हूँ इसलिए मुझे आश्चर्य है ... – fooledbyprimes