2010-05-02 13 views
19

मैं रूबी वाक्यविन्यास पर एक निश्चित दस्तावेज़ खोज रहा हूं। मैं मूल एपीआई और मानक पुस्तकालय के लिए निश्चित दस्तावेजों के बारे में जानता हूं, लेकिन सिंटैक्स के बारे में क्या? उदाहरण के लिए, इस तरह के एक दस्तावेज़ को कवर करना चाहिए: आरक्षित शब्द, स्ट्रिंग अक्षर सिंटैक्स, चर/वर्ग/मॉड्यूल के लिए नियमों का नामकरण, सभी सशर्त बयान और उनके क्रमिक, और आगे।क्या रूबी वाक्यविन्यास के लिए कोई निश्चित संदर्भ दस्तावेज़ है?

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

उदाहरण के लिए, क्या आप जानते थे कि आप प्रारंभिक केस मान के बिना केस स्टेटमेंट का उपयोग कर सकते हैं, और फिर क्लॉज के बाद यह पहला सत्य निष्पादित करेगा? किसी दिए गए रूबी पुस्तक या ट्यूटोरियल मामले वाक्यविन्यास की उस विशेष कम ज्ञात कार्यक्षमता को कवर या नहीं कर सकता है। केस स्टेटमेंट्स के बारे में "प्रोग्रामिंग रूबी" में इस अनुभाग में चर्चा नहीं की गई है। लेकिन यह सिर्फ एक छोटा सा उदाहरण है।

अब तक का सबसे अच्छा दस्तावेज रूबिस्पेक प्रोजेक्ट है, जो भाषा के लिए एक पूर्ण परीक्षण सूट लिखने का प्रयास प्रतीत होता है। यह बुरा नहीं है, लेकिन एक व्यावहारिक दृष्टिकोण से उपयोग करना थोड़ा मुश्किल है, जो कि अपनी परियोजनाओं पर काम कर रहे डेवलपर के रूप में है।

क्या मुझे अभी कुछ याद आ रहा है या वास्तव में कोई निश्चित संपूर्ण रूबी वाक्यविन्यास को परिभाषित करने योग्य पठनीय दस्तावेज़ है?

उत्तर

12

केवल दस्तावेज है कि यथोचित रूप में "निश्चित" वर्णित किया जा सकता YARV स्रोत पेड़ में parse.y के स्रोत कोड है।

ISO Draft Specification में व्याकरण के सारांश के साथ एक 39 पृष्ठ परिशिष्ट शामिल है। नोट, हालांकि, आईएसओ रूबी रूबी 1.8 और 1.9 के चौराहे का एक न्यूनतम सबसेट है। IOW: यह किसी भी चीज का वर्णन नहीं करता है जो केवल 1.8 में है या केवल 1.9 में है (इसलिए, 1.9 में सिंटैक्स जोड़ों जैसे स्टेबी प्रो और प्रतीक हैंश का वर्णन नहीं किया गया है), और न ही उस छेड़छाड़ में सब कुछ का वर्णन करता है। आईएसओ रूबी उस संबंध में आईएसओ एचटीएमएल की तरह थोड़ा सा है।

RubySpec प्रोजेक्ट में रूबी भाषा के लिए निष्पादन योग्य विनिर्देश शामिल हैं। हालांकि इसमें व्याकरण का एक स्पष्ट विनिर्देश नहीं है। उदाहरणों में व्याकरण का एकमात्र विनिर्देश अंतर्निहित है। इसके अलावा, क्योंकि रूबीस्पेक एक उदाहरण-आधारित नमूना है, यह केवल आपको वैध रूबी कोड के विशिष्ट उदाहरण दिखा सकता है, लेकिन यह आपको सभी संभव मान्य रूबी प्रोग्राम जैसे व्याकरण स्पेक प्रोग्राम नहीं बता सकता है। और, क्योंकि रूबीस्पेक स्वयं निष्पादन योग्य रूबी कोड है, यह केवल आपको वैध उदाहरण दिखा सकता है, अमान्य नहीं।

अंतिम बात जिसे निश्चित माना जा सकता है वह है The Ruby Programming Language डेविड फ़्लानागन और युकिहिरो "मैटज़" मात्सुमोतो द्वारा पुस्तक।

नोट, हालांकि, "रूबी सिंटैक्स का पूरा" एक कठिन काम है, क्योंकि रुबी का सिंटैक्स अमानवीय अजीब कोने के मामलों की एक बड़ी मात्रा के साथ जटिल है।

+0

@ जोर्ग डब्ल्यू मिट्टाग: आईएसओ ड्राफ्ट के बारे में स्पष्टीकरण के लिए धन्यवाद। मुझे कहना है कि 1.8 और 1.9 के सामान्य उप-समूह के बारे में व्यवसाय ड्राफ्ट की वेबसाइट (या प्रेस जो हो रहा है) से बिल्कुल स्पष्ट नहीं है। ड्राफ्टिंग दिशानिर्देश अनुभाग में, वेबसाइट के लेखक कहते हैं (दो बार) कि वे प्राथमिक संदर्भ के रूप में 1.8.7 का उपयोग कर रहे हैं। ज्यादातर लोगों की तरह, मैंने इसका मतलब यह भी लिया कि 1.8.7 वह लक्ष्य था जिसे वे निर्दिष्ट करना चाहते थे। – Telemachus

+1

@Telemachus: यह मसौदा दिशा-निर्देशों में छिपा हुआ है: दूसरा, हम चाहते हैं कि इस तरह की रूबी 1.8.7, रूबी 1.8.6, ** रूबी 1.9 **, JRuby, Rubinius, और IronRuby के रूप में मौजूदा कार्यान्वयन विनिर्देश के अनुरूप कर सकते हैं ** उन्हें संशोधित किए बिना **। वहाँ कुछ विशेषताएं जो कार्यान्वयन के कुछ में लागू नहीं कर रहे हैं या कार्यान्वयन के बीच अलग कर रहे हैं। ** उन सुविधाओं विनिर्देश से बाहर रखा गया है, या के रूप में या तो "कार्यान्वयन परिभाषित" या वर्णित "कार्यान्वयन निर्भर है।" ** –

1

यह एक बहुत अच्छी रूबी वाक्य रचना संसाधन

http://www.cs.auckland.ac.nz/references/ruby/doc_bundle/Manual/man-1.4/syntax.html

+0

एचएम हां, मैंने पाया है कि दस्तावेज़ व्यावहारिक दृष्टिकोण से भी उपयोगी है, लेकिन मैं किसी भी प्रकार के आधिकारिक मूल संसाधन को खोजने में सक्षम नहीं था जिसने इसे संदर्भ दस्तावेज़ के रूप में विश्वसनीयता प्रदान की। तो मुझे यकीन नहीं था कि मैं उस पर कितना भरोसा कर सकता हूं, या उस मामले के लिए 1.4 के बाद से भाषा कितनी बदल गई है। – Yetanotherjosh

-1

सुझाव ऊपर जवाब के रूप में है, वहाँ http://ruby-std.netlab.jp पर एक "कल्पना" लिखने पर एक प्रयास है।

आपको उस "spec" से सावधान रहना होगा। यह भाषा डिजाइनरों द्वारा नहीं किया जाता है, और वे मूल रूप से दस्तावेज कर रहे हैं जो वे देखते हैं और दूसरी तरफ नहीं। यह 1.8.7 पर आधारित है इसलिए 1.9 में विशेषताएं हो सकती हैं जो कवर नहीं हैं।

मैं कल्पना नहीं कर सकता कि 300 पृष्ठ दस्तावेज़ के साथ वाक्यविन्यास को याद रखना। "टेबल पर" रखने के लिए, this cheatsheet वर्णन करता है कि आप क्या चाहते हैं: संघनित वाक्यविन्यास, आरक्षित शब्द, आदि This is an alternative from dzone

+0

मैं इस धारणा के तहत था कि स्पू को आधिकारिक तौर पर रुबी देवों (मैट्ज़ एट अल।) द्वारा स्वीकृत किया गया था। क्या वह गलत है? और, हाँ, 1.8.7 की पसंद विवादास्पद थी, लेकिन यह एक शुरुआत है। अधिक जानकारी और लिंक के लिए यहां देखें: http://www.rubyinside.com/ruby-iso-spec-draft-2900.html – Telemachus

+0

इस स्पेस का नेतृत्व शूगो मायेडा (मैट्स का दाहिना हाथ आदमी), श्याउहे उराबे (रुबी का रखरखाव 1.8.7 और एमआरआई 1.8.7) और युटाका हर (रूबी, याएआरवी और एमआरआई डेवलपर) खुद मैटज़ के साथ निकट सहयोग में। और यह 1.8.7 पर आधारित नहीं है, यह 1.8.7 और 1.9.2 के सामान्य सबसेट पर आधारित है। आप इस प्रक्रिया के साथ spec को भ्रमित कर रहे हैं (जो विडंबनापूर्ण है क्योंकि आप * spec के लेखकों पर आरोप लगाते हैं): वे 1.8.7 से शुरू हुए और 1.9.2 में मौजूद सभी चीज़ों को हटा दिया। वे इसे दूसरे तरीके से कर सकते थे, नतीजा बिल्कुल वही होगा। –

+0

जोर्ग, उस जानकारी के लिए धन्यवाद। – duncan

4

कार्यों में रूबी मानक का एक मसौदा है। आप इसे यहाँ प्राप्त कर सकते हैं: http://ruby-std.netlab.jp/

आपका उदाहरण के बारे में case और प्रोग्रामिंग रूबी खराब चुना जाता है। प्रोग्रामिंग रूबीcase का परिचय जब (प्रथम संस्करण के लिए पेज 98 पर; दूसरे संस्करण के लिए 141), थॉमस कहते हैं,

रूबी case अभिव्यक्ति एक शक्तिशाली जानवर है: बहु तरफ़ा if स्टेरॉयड पर। और इसे और भी अधिक शक्तिशाली बनाने के लिए, यह दो स्वादों में आता है।

इसके बाद उन्होंने कुछ समय के लिए दोनों तरीकों से मामले (एक स्पष्ट लक्ष्य के साथ प्रारंभिक case और बिना के बाद) का उपयोग कैसे करें। वह वास्तव में उस शैली से शुरू होता है जिसे आप कहते हैं कि उसका उल्लेख नहीं है।

आपका बड़ा बिंदु हालांकि अनुचित नहीं है। यह मानक होने के लिए शायद मददगार होगा।

+0

ध्यान दें कि आईएसओ विनिर्देश बहुत कम है। इसमें केवल 1.8 और 1.9 के सामान्य सबसेट शामिल हैं (इसलिए, उदाहरण के लिए, कोई स्टैबी प्रो और कोई प्रतीक हैश नहीं है)। और यह पूरे आम सबसेट को भी कवर नहीं करता है, केवल एक बहुत छोटा हिस्सा है। –

+0

केस स्टेटमेंट और प्रोग्रामिंग रूबी बुक के संबंध में, मैं ruby-doc.org से होस्ट किए गए संस्करण को देख रहा था जिसे रूबी-डॉक होमपेज से पहले संस्करण के रूप में लेबल किया गया है। यह विशेष संस्करण केस स्टेटमेंट्स के "दो स्वाद" का उल्लेख नहीं करता है (http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html#S5) किसी भी मामले में, आप सही हैं कि केस स्टेटमेंट एक बुरा उदाहरण था!पुस्तक के विभिन्न संस्करण बहुत अधिक हैं, और आखिरकार केवल एक मानक संदर्भ की आवश्यकता के लिए वजन जोड़ता है जो ऐसा प्रतीत होता है। – Yetanotherjosh

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

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