सभी रूबी कार्यान्वयन में, ऑपरेटर प्राथमिकता पार्सर द्वारा संभाली जाती है। चूंकि बहुत सारे मौजूदा रूबी कार्यान्वयन एक ही पार्सर, या एक ही वाईएसीसी व्याकरण, parse.y
in YARV is the file you want to look at से उत्पन्न एक पार्सर का उपयोग करते हैं। (।: src/org/jruby/parser/Ruby19Parser.y
ही IronRuby के लिए: JRuby में, उदाहरण के लिए, उस फ़ाइल को अनिवार्य रूप से एक ही है। Merlin/Main/Languages/Ruby/Ruby/Compiler/Parser/Parser.y
)
केवल चार रूबी क्रियान्वयन करना है कि नहीं या तो सीधे YARV पार्सर का उपयोग करें या एक YACC क्लोन उत्पन्न पार्सर का उपयोग YARV के parse.y
से, कार्डिनल, टिनरब, रूबीगोलाइटली और एक्सआरबी हैं।
कार्डिनल तोते वर्चुअल मशीन के लिए रूबी कार्यान्वयन है, और चूंकि तोते में तोता व्याकरण इंजन शामिल है, कार्डिनल स्वाभाविक रूप से इसका उपयोग करता है। दिलचस्प फ़ाइल src/parser/grammar.pg
है। पीजीई एक हाइब्रिड रिकर्सिव-डेसेंट पार्सर/ऑपरेटर प्राथमिकता पार्सर है, जिसका अर्थ है कि ऑपरेटर प्राथमिकता व्याकरण फ़ाइल में बहुत अच्छी तरह से दिखाई देती है।
टिनरब इयान पियामार्टा की पैर लाइब्रेरी का उपयोग करते हुए एक पीईजी पार्सर का उपयोग करता है। जैसा कि पीईजी पार्सर्स के लिए सामान्य है, वहां कोई ऑपरेटर प्राथमिकता तालिका नहीं है, बल्कि प्राथमिकता व्याकरण की पदानुक्रमिक संरचना में निहित है। विवरण के लिए vm/grammar.leg
देखें। RubyGoLightly tinyrb से लिया गया है, सिवाय इसके कि यह कार्यान्वयन भाषा के रूप में सी के बजाय गो का उपयोग करता है, लेकिन यह एक ही पीईजी व्याकरण का उपयोग करता है।
एक्सआरबीई अपने पार्सर के लिए एएनटीएलआर का उपयोग करता है। यहां, दिलचस्प फ़ाइल src/com/xruby/compiler/parser/ruby.g
है।
रूबिनीस मेलबर्न पार्सर का उपयोग करता है, जो अनिवार्य रूप से सीए एक्सटेंशन के रूप में पैक किया गया यारवी पार्सर है। MagLev ruby_parser
का उपयोग करता है (नीचे देखें)।
रूबी कार्यान्वयन के अलावा, अन्य रूबी पार्सर्स भी उपलब्ध हैं।
रयान डेविस का रूबी_पार्सर YARV YACC व्याकरण से लिया गया है। यह पार्सर जेनरेटर के रूप में आरसीसी का उपयोग करता है। lib/ruby_parser.y
देखें।
कालेब क्लॉसन के रेडपार्स कालेब के अपने हाथ से लिखे गए कंपाइलर-दुभाषिया का उपयोग करता है। दिलचस्प फ़ाइल lib/redparse/babyparser.rb
है।
यह सभी पार्सर्स मुझे पता है, जो वास्तव में ऑपरेटर प्राथमिकता को संभालते हैं।आरडीओसी में एक और पार्सर बनाया गया है, और वहां यार्ड (यह अब रेडपार्स का उपयोग करता है) में एक होता था, लेकिन मॉड्यूल, कक्षाओं और विधियों, टिप्पणियों और विधि पैरामीटर सूचियों को निकालने के लिए केवल रूबी के सिंटैक्स के लिए पर्याप्त संभालते हैं। वे ऑपरेटर प्राथमिकता से निपटते नहीं हैं।
धन्यवाद। आपका उत्तर बहुत विस्तृत है और इसमें लाइन नंबर सहित फ़ाइलों के लिए उत्कृष्ट पॉइंटर्स हैं। यह मेरी उम्मीदों से काफी अधिक है। मैं आपके कुछ अन्य उत्तरों को देखता हूं और रुबी कार्यान्वयन के बारे में बहुत कुछ सीखता हूं। अपना ज्ञान साझा करने के लिए आपका धन्यवाद। – iter
आपका स्वागत है! –