2009-03-08 14 views
85

फ्लेक्स & लेक्स और वाईएसी & बायसन के बीच क्या अंतर है। मैंने इंटरनेट पर जंगली खोज की और मुझे कोई ठोस जवाब नहीं मिला।फ्लेक्स/लेक्स और वाईएसीसी/बाइसन के बीच क्या अंतर है?

क्या मैं उबंटू पर शुद्ध लेक्स और वाईएसी स्थापित कर सकता हूं, या मैं केवल फ्लेक्स और बाइसन इंस्टॉल कर सकता हूं। मैं उलझन में हूं।

  • क्या लेक्स या वाईएसी अभी भी किसी के द्वारा बनाए रखा जा रहा है?
  • क्या वे सभी स्वतंत्र हैं?
  • यदि लेक्स मुफ्त नहीं है तो मैंने इसे अपने उबंटू वितरण पर क्यों इंस्टॉल किया है?

    lex --version 
    lex 2.5.35 
    
+2

कोई लेक्स संस्करण 2.5.35 नहीं है - आप फ्लेक्स संस्करण 2.5.35 चला रहे हैं, अगर आप इसे 'लेक्स' –

उत्तर

55

लेक्स और फ्लेक्स के बीच कुछ अंतर हैं, लेकिन आपको फ्लेक्स के साथ समस्याओं में भाग लेने के लिए लेक्स का दुरुपयोग करना होगा। (मेरे पास एक प्रोग्राम है जो लेक्स का दुरुपयोग करता है और इसलिए फ्लेक्स के तहत काम नहीं करता है।) यह मुख्य रूप से इनपुट लुकहेड के क्षेत्र में है; लेक्स में, आप अपना इनपुट कोड प्रदान कर सकते हैं और चरित्र स्ट्रीम को संशोधित कर सकते हैं; फ्लेक्स आपको ऐसा करने नहीं देगा।

वाईएसीसी और बाइसन बहुत करीब से संगत हैं, हालांकि बाइसन के पास कुछ अतिरिक्त चाल हैं जो यह कर सकती हैं।

शायद आपको उबंटू पर स्थापित करने के लिए लेक्स और वाईएसी की मूल प्रतियां (मूल, AT & टी संस्करण) नहीं मिल सकती हैं। मैं जरूरी नहीं कहूंगा कि यह असंभव है, लेकिन मुझे इस तरह से अवगत नहीं है। फ्लेक्स और बाइसन आसानी से उपलब्ध हैं और अधिकांश उद्देश्यों के बराबर हैं। आप बीएसडी दुनिया से विभिन्न वैकल्पिक और लगभग समकक्ष कार्यक्रम भी पा सकते हैं।

लेक्स और वाईएसी यूनिक्स एसवीआरएक्स लाइसेंसों द्वारा बनाए रखा जाता है - आईबीएम (एईक्स), एचपी (एचपी-यूएक्स) और सन (सोलारिस) जैसी कंपनियों ने उनके आदेश पर लेक्स और वाईएसी के संस्करणों को संशोधित किया है। एमकेएस एमकेएस लेक्स और एमकेएस वाईएसीसी भी प्रदान करता है; हालांकि, Yacc कम से कम कुछ गैर-मानक एक्सटेंशन हैं।

फ्लेक्स और बायसन निःशुल्क हैं। (एटी & टी) लेक्स और वाईएसी नहीं हैं।

+3

Yacc के बारे में जानकारी गलत है। बर्कले में एक वाईएसी है, जो मौजूद है और सभी ओपन सोर्स बीएसडी ऑपरेटिंग सिस्टम पर बीएसडी लाइसेंस के तहत उपलब्ध है। मैंने इस खाते पर डाउनवॉट किया, लेकिन अगर उत्तर जल्दी से ठीक किया गया है तो मैं डाउनवोट हटा दूंगा। –

+1

@ डैनियल: AFAIK, AT & T Yacc बर्कले से प्राप्त नहीं किया जा सकता - आप बर्कले से क्या प्राप्त करते हैं बर्कले यैक है।मैं इसे प्रतिबिंबित करने के उत्तर को स्पष्ट करूंगा। –

+0

फ्लेक्स में आप निश्चित रूप से इनपुट बफर को दर्द रहित ढंग से स्विच कर सकते हैं (मैंने इसे एक बार अनिवार्य रूप से '# शामिल'' संभालने के लिए किया था)। लेक्स एंड वाईएसी पर मेरी O'Reilly पुस्तक (हाथ में नहीं, माफ करना) ने कहा कि यह घृणित हैक्स के माध्यम से केवल लेक्स में संभव था। – vonbrand

23

बाइसन जीएनयू कार्यान्वयन/Yacc का विस्तार है, फ्लेक्स लेक्स के उत्तराधिकारी है। किसी भी मामले में, यह बाइसन/फ्लेक्स का उपयोग करने के लिए ठीक (और अनुशंसित) है।

+1

के रूप में आमंत्रित करते हैं तो यह स्वयं को 'लेक्स' के रूप में पहचानता है, इसके अतिरिक्त, BYacc, yacc का बर्कले कार्यान्वयन, व्यापक रूप से उपलब्ध है (मैं इसे अपने डेबियन भंडार सूची में देखता हूं)। –

+0

फ्लेक्स को कहा जाता है क्योंकि यह (था?) Lex से _much_ तेज है। इसमें कई एक्सटेंशन हैं, और जेनरेट की गई फाइलें समान नहीं हैं (यानी, लेक्स में बदसूरत हैक्स फ्लेक्स और वाइसवर्सा के साथ काम नहीं करते हैं)। – vonbrand

8

अधिकांश (सभी?) लिनक्स सिस्टम पर, "लेक्स" वास्तव में फ्लेक्स के लिए एक प्रतीकात्मक लिंक है। असल में, यह मुफ्त संस्करण के लिए केवल एक अलग नाम है।

+1

मेरे सिस्टम (आर्क लिनक्स) पर, दो बाइनरी एक ही तरीके से व्यवहार नहीं करते हैं। शायद एक लेक्स संगतता सुविधा। –

5

वाईएसीसी योजना 9 और ओपन सोलारिस दोनों के ओपन सोर्स लाइसेंस के तहत उपलब्ध है। इसके अलावा, बर्कले वाईएसीसी भी है, जो मूल वाईएसीसी के साथ संगत है, लेकिन स्रोत कोड साझा नहीं करता है। बर्कले वाईएसीसी किसी भी ओपन सोर्स बीएसडी ऑपरेटिंग सिस्टम पर पाया जा सकता है।

संबंधित मुद्दे