रीबोल: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 22: Line 22:
}}
}}


रिबोल ({{IPAc-en|ˈ|r|ɛ|b|əl}} {{respell|REB|əl}}; ऐतिहासिक रूप से REBOL) एक [[क्रॉस-प्लेटफॉर्म]] है<ref name="RD" />[[डेटा विनिमय भाषा]] और एक [[बहु-प्रतिमान प्रोग्रामिंग भाषा]] | नेटवर्क संचार और वितरित कंप्यूटिंग के लिए [[कार्ल सैसेनराथ]] द्वारा डिज़ाइन की गई बहु-प्रतिमान [[गतिशील प्रोग्रामिंग भाषा]]। यह बोलीभाषा की अवधारणा का परिचय देता है: लघु, [[अनुकूलन (कंप्यूटर विज्ञान)]], कोड और डेटा के लिए [[डोमेन-विशिष्ट भाषा]]एं,<ref name="RD">Roberts, Ralph (2000). ''REBOL for Dummies.'' Hungry Minds. {{ISBN|0-7645-0745-1}}.</ref><ref name="RP">Auverlot, Olivier (2001). ''Rebol Programmation.'' Eyrolles. {{ISBN|2-212-11017-0}}.</ref> जो इसके डिजाइनर कार्ल सैसेनराथ के अनुसार भाषा की सबसे उल्लेखनीय संपत्ति भी है:
'''रीबोल''' (/ˈrɛbəl/ REB-əl; ऐतिहासिक रूप से रीबोल) एक क्रॉस-प्लेटफ़ॉर्म <ref name="RD">Roberts, Ralph (2000). ''REBOL for Dummies.'' Hungry Minds. {{ISBN|0-7645-0745-1}}.</ref> डेटा एक्सचेंज लैंग्वेज और नेटवर्क संचार और वितरित कंप्यूटिंग के लिए कार्ल सैसेनराथ द्वारा डिज़ाइन की गई एक बहु-प्रतिमान गतिशील प्रोग्रामिंग लैंग्वेज है। यह द्वंद्वात्मकता की अवधारणा का परिचय देता है: कोड और डेटा के लिए छोटी, अनुकूलित, डोमेन-विशिष्ट लैंग्वेजएं, <ref name="RD" /><ref name="RP">Auverlot, Olivier (2001). ''Rebol Programmation.'' Eyrolles. {{ISBN|2-212-11017-0}}.</ref> जो कि इसके डिजाइनर कार्ल सैसेनराथ के अनुसार लैंग्वेज की सबसे उल्लेखनीय संपत्ति भी है:


{{Blockquote|text=Although it can be used for programming, writing functions, and performing processes, its greatest strength is the ability to easily create domain-specific languages or dialects|author=Carl Sassenrath<ref name="DJ">{{cite web|last=Sassenrath|first=Carl|date=2000-07-01|url=http://www.ddj.com/184404172|title=Inside the REBOL scripting language|publisher=[[Dr. Dobb's Journal]]}}</ref>}}
{{Blockquote|text=Although it can be used for programming, writing functions, and performing processes, its greatest strength is the ability to easily create domain-specific languages or dialects


[[डगलस क्रॉकफ़ोर्ड]], जो [[जावास्क्रिप्ट]] के विकास में अपनी भागीदारी के लिए जाने जाते हैं, ने रीबोल को एक अधिक आधुनिक भाषा के रूप में वर्णित किया है, लेकिन लिस्प के कुछ समान विचारों के साथ, इसमें यह सब डेटा के प्रतिनिधित्व पर बनाया गया है जो प्रोग्राम के रूप में और [[JSON]] के प्रभावों में से एक के रूप में निष्पादन योग्य है।<ref name="JSON" />


मूल रूप से, भाषा और इसका आधिकारिक कार्यान्वयन [[मालिकाना सॉफ्टवेयर]] और बंद स्रोत था, जिसे REBOL Technologies द्वारा विकसित किया गया था। [[लॉरेंस रोसेन (वकील)]] के साथ चर्चा के बाद,<ref>{{cite web|url=http://www.rebol.com/article/0511.html |title=खुला स्रोत बनने के लिए REBOL|publisher=Rebol.com |date=September 25, 2012 |access-date=January 23, 2014}}</ref> रीबोल संस्करण 3 दुभाषिया अपाचे लाइसेंस|अपाचे 2.0 लाइसेंस के तहत 12 दिसंबर 2012 को जारी किया गया था।<ref>{{cite web|url=http://www.rebol.com/cgi-bin/blog.r?view=0519 |title=Comments on: R3 Source Code Released!|first=Carl|last=Sassenrath|date=December 12, 2012|access-date=August 14, 2014 |quote=''You probably thought the source release would never happen? Am I right? Well, it's there now in github at github.com/rebol/rebol.''}}</ref> पुराने संस्करण केवल बाइनरी रूप में उपलब्ध हैं, और उनके लिए कोई स्रोत रिलीज़ की योजना नहीं है।
हालाँकि इसका उपयोग प्रोग्रामिंग, लेखन कार्यों और प्रक्रियाओं को निष्पादित करने के लिए किया जा सकता है, इसकी सबसे बड़ी ताकत डोमेन-विशिष्ट लैंगुएजेस या उपभाषा को आसानी से बनाने की क्षमता है।|author=Carl Sassenrath<ref name="DJ">{{cite web|last=Sassenrath|first=Carl|date=2000-07-01|url=http://www.ddj.com/184404172|title=Inside the REBOL scripting language|publisher=[[Dr. Dobb's Journal]]}}</ref>}}
 
डगलस क्रॉकफ़ोर्ड, जो [[जावास्क्रिप्ट]] के विकास में अपनी भागीदारी के लिए जाने जाते हैं, ने रेबोल को "एक अधिक आधुनिक लैंग्वेज के रूप में वर्णित किया है, लेकिन लिस्प के कुछ समान विचारों के साथ, यह सब डेटा के प्रतिनिधित्व पर बनाया गया है जिसे बाद में प्रोग्राम के रूप में निष्पादन योग्य बनाया जाता है" और JSON के प्रभावों में से एक के रूप में निष्पादन योग्य है।<ref name="JSON" />
 
 
मूल रूप से, लैंग्वेज और इसका आधिकारिक functionान्वयन [[मालिकाना सॉफ्टवेयर|स्वामित्व सॉफ्टवेयर]] और क्लोज्ड सोर्स था, जिसे रीबोल Technologies द्वारा विकसित किया गया था। लॉरेंस रोसेन के साथ चर्चा के बाद,<ref>{{cite web|url=http://www.rebol.com/article/0511.html |title=खुला स्रोत बनने के लिए REBOL|publisher=Rebol.com |date=September 25, 2012 |access-date=January 23, 2014}}</ref> रीबोल संस्करण 3 उपभाषा अपाचे 2.0 लाइसेंस के तहत 12 दिसंबर 2012 को जारी किया गया था।<ref>{{cite web|url=http://www.rebol.com/cgi-bin/blog.r?view=0519 |title=Comments on: R3 Source Code Released!|first=Carl|last=Sassenrath|date=December 12, 2012|access-date=August 14, 2014 |quote=''You probably thought the source release would never happen? Am I right? Well, it's there now in github at github.com/rebol/rebol.''}}</ref> पुराने संस्करण केवल बाइनरी रूप में उपलब्ध हैं, और उनके लिए कोई सोर्स रिलीज़ की योजना नहीं है।
 
रीबोल का उपयोग [[इंटरनेट]] [[अनुप्रयोग प्रक्रिया सामग्री]] (क्लाइंट- और सर्वर-साइड दोनों), डेटाबेस अनुप्रयोगों, [[उपयोगिता सॉफ्टवेयर]] और [[मल्टीमीडिया]] अनुप्रयोगों को प्रोग्राम करने के लिए किया गया है।<ref name="RD" />


रीबोल का उपयोग [[इंटरनेट]] [[अनुप्रयोग प्रक्रिया सामग्री]] ([[ ग्राहक की ओर ]]|क्लाइंट- और [[ सर्वर साइड ]] दोनों), [[डेटाबेस]] एप्लिकेशन, [[उपयोगिता सॉफ्टवेयर]] और [[मल्टीमीडिया]] एप्लिकेशन को प्रोग्राम करने के लिए किया गया है।<ref name="RD" />




==व्युत्पत्ति==
==व्युत्पत्ति==
रीबोल शुरू में सभी बड़े अक्षरों में लिखी गई रिलेटिव एक्सप्रेशन बेस्ड ऑब्जेक्ट लैंग्वेज का संक्षिप्त रूप था।<ref name="RD" /><ref name="DJ" />प्रस्तुत भाषा नामकरण में आधुनिक प्रवृत्तियों के साथ तालमेल बिठाना, उदाहरणार्थ ऐतिहासिक नाम LISP के स्थान पर लिस्प का प्रयोग करने से, प्रोग्रामर्स ने सभी बड़े अक्षरों में REBOL लिखने की प्रथा बंद कर दी। ससेनराथ ने अंततः अपने ब्लॉग पर सामुदायिक बहस में नामकरण का प्रश्न रखा।<ref>{{cite web |url=http://www.rebol.com/cgi-bin/blog.r?view=0525 |title=Calling REBOL Rebol? |date=December 14, 2012 <!--6:49 GMT--> |access-date=December 2, 2013 |archive-date=December 3, 2013 |archive-url=https://web.archive.org/web/20131203023615/http://www.rebol.com/cgi-bin/blog.r?view=0525 |url-status=dead }}</ref> बाद के लेखन में, ससेनराथ ने भाषा का नाम रिबोल लिखने की परंपरा को अपनाया।<ref>{{cite web|last1=Sassenrath|first1=Carl|title=आपके पसंदीदा एंबेडेड बोर्ड के लिए क्रॉस-कंपाइलिंग रीबोल|url=http://www.rebol.com/article/0526.html|access-date=16 September 2016}}</ref>
रीबोल प्रारंभ में सभी बड़े अक्षरों में लिखी गई रिलेटिव एक्सप्रेशन बेस्ड ऑब्जेक्ट लैंग्वेज का संक्षिप्त रूप था।<ref name="RD" /><ref name="DJ" /> प्रस्तुत लैंग्वेज नामकरण में आधुनिक प्रवृत्तियों के साथ तालमेल बिठाना, उदाहरणार्थ ऐतिहासिक नाम लिस्प (LISP) को लिस्प से बदलने के कारण, प्रोग्रामर्स ने सभी बड़े अक्षरों में रीबोल (रीबोल) लिखने की प्रथा क्लोज्ड कर दी। सैसेनराथ ने अंततः अपने ब्लॉग पर सामुदायिक बहस में नामकरण का प्रश्न रखा।<ref>{{cite web |url=http://www.rebol.com/cgi-bin/blog.r?view=0525 |title=Calling REBOL Rebol? |date=December 14, 2012 <!--6:49 GMT--> |access-date=December 2, 2013 |archive-date=December 3, 2013 |archive-url=https://web.archive.org/web/20131203023615/http://www.rebol.com/cgi-bin/blog.r?view=0525 |url-status=dead }}</ref> बाद के लेखन में, ससेनराथ ने लैंग्वेज का नाम रेबोल लिखने की परंपरा को अपनाया था।<ref>{{cite web|last1=Sassenrath|first1=Carl|title=आपके पसंदीदा एंबेडेड बोर्ड के लिए क्रॉस-कंपाइलिंग रीबोल|url=http://www.rebol.com/article/0526.html|access-date=16 September 2016}}</ref>
 


==इतिहास==
==इतिहास==
पहली बार 1997 में रिलीज़ किया गया, रेबोल को एमिगाओएस के वास्तुकार और प्राथमिक डेवलपर कार्ल ससेनराथ द्वारा 20 साल की अवधि में डिजाइन किया गया था, जो उनके [[सांकेतिक शब्दार्थ]] के अध्ययन और प्रोग्रामिंग भाषाओं [[लिस्प (प्रोग्रामिंग भाषा)]], [[फोर्थ (प्रोग्रामिंग भाषा)]], [[लोगो (प्रोग्रामिंग भाषा)]], और सेल्फ (प्रोग्रामिंग भाषा) से अवधारणाओं का उपयोग करने पर आधारित था।
पहली बार 1997 में रिलीज़ किया गया, रेबोल को एमिगाओएस के वास्तुकार और प्राथमिक डेवलपर कार्ल ससेनराथ द्वारा 20 साल की अवधि में डिजाइन किया गया था, जो उनके [[सांकेतिक शब्दार्थ|सांकेतिक सीमेन्टिकी]] के अध्ययन और प्रोग्रामिंग लैंग्वेज [[लिस्प (प्रोग्रामिंग भाषा)|लिस्प (प्रोग्रामिंग लैंग्वेज)]], [[फोर्थ (प्रोग्रामिंग भाषा)|फोर्थ (प्रोग्रामिंग लैंग्वेज)]], [[लोगो (प्रोग्रामिंग भाषा)|लोगो (प्रोग्रामिंग लैंग्वेज)]], और सेल्फ (प्रोग्रामिंग लैंग्वेज) से अवधारणाओं का उपयोग करने पर आधारित था।


# REBOL Technologies की स्थापना 1998 में हुई थी।
# रीबोल टेक्नोलॉजीज की स्थापना 1998 में हुई थी।
# REBOL 2, दुभाषिया, जो विस्तारित दुभाषिया संस्करणों का मूल बन गया, पहली बार 1999 में जारी किया गया था।
# रीबोल 2, उपभाषा, जो विस्तारित उपभाषा संस्करणों का मूल बन गया, पहली बार 1999 में जारी किया गया था।
## REBOL/कमांड, जिसने मजबूत एन्क्रिप्शन और [[ डेटाबेस कनेक्टिविटी खोलें ]] एक्सेस जोड़ा, सितंबर 2000 में जारी किया गया था
## रीबोल/कमांड (''REBOL/Command''), जिसने मजबूत एन्क्रिप्शन और डेटाबेस कनेक्टिविटी खोलें एक्सेस जोड़ा, सितंबर 2000 में जारी किया गया था
## REBOL/View को अप्रैल 2001 में रिलीज़ किया गया था, जिसमें मुख्य भाषा पर ग्राफ़िकल क्षमताएँ जोड़ी गई थीं।
## रीबोल/व्यू (''REBOL/View'') को अप्रैल 2001 में रिलीज़ किया गया था, जिसमें मुख्य लैंग्वेज पर ग्राफ़िकल क्षमताएँ जोड़ी गई थीं।
## REBOL/IOS, REBOL के साथ निर्मित एक विस्तार योग्य सहयोग वातावरण अगस्त 2001 में जारी किया गया था।
## रीबोल/आईओएस (''REBOL/IOS''), रीबोल के साथ निर्मित एक विस्तार योग्य सहयोग वातावरण अगस्त 2001 में जारी किया गया था।
## REBOL/SDK, बाइंडिंग के लिए कर्नेल का विकल्प और साथ ही एक प्रीप्रोसेसर प्रदान करता है, जिसे दिसंबर 2002 में जारी किया गया था।
## रीबोल/एस डी के (''REBOL/SDK''), बाइंडिंग के लिए कर्नेल का विकल्प और साथ ही एक प्रीप्रोसेसर प्रदान करता है, जिसे दिसंबर 2002 में जारी किया गया था।
# {{anchor|Rebol_3}}रीबोल 3 [आर3], [[दुभाषिया (कंप्यूटिंग)]] का नवीनतम संस्करण, के अल्फा संस्करण जनवरी 2008 से आरईबीओएल टेक्नोलॉजीज द्वारा जारी किए गए थे। दिसंबर 2012 में अपाचे 2 प्रोजेक्ट के रूप में रिलीज होने के बाद से, इसे रीबोल समुदाय द्वारा विकसित किया जा रहा है।<ref>{{cite web|title=रिबोल दुभाषिया के लिए स्रोत कोड|url=https://github.com/rebol/rebol|website=rebol/rebol GitHub|access-date=14 March 2017}}</ref>
# {{anchor|Rebol_3}}रीबोल 3 [R3], [[दुभाषिया (कंप्यूटिंग)|उपभाषा (कंप्यूटिंग)]] का नवीनतम संस्करण, के अल्फा संस्करण जनवरी 2008 से आरईबीओएल टेक्नोलॉजीज द्वारा जारी किए गए थे। दिसंबर 2012 में अपाचे 2 प्रोजेक्ट के रूप में रिलीज होने के बाद से, इसे रीबोल समुदाय द्वारा विकसित किया जा रहा है।<ref>{{cite web|title=रिबोल दुभाषिया के लिए स्रोत कोड|url=https://github.com/rebol/rebol|website=rebol/rebol GitHub|access-date=14 March 2017}}</ref>




Line 52: Line 56:


===उपयोग में आसानी===
===उपयोग में आसानी===
रीबोल डिज़ाइन सिद्धांतों में से एक सरल चीज़ों को सरल तरीकों से करना है।<ref name="RD" />निम्नलिखित उदाहरण में विज़ुअल इंटरफ़ेस बोली का उपयोग ग्राफिकल यूजर इंटरफ़ेस के साथ एक सरल [[नमस्ते विश्व कार्यक्रम]] का वर्णन करने के लिए किया जाता है:
रीबोल डिज़ाइन सिद्धांतों में से एक सरल चीज़ों को सरल तरीकों से करना है।<ref name="RD" />निम्नलिखित उदाहरण में विज़ुअल इंटरफ़ेस उपभाषा का उपयोग ग्राफिकल यूजर इंटरफ़ेस के साथ एक सरल हेलो वर्ल्ड (Hello World) functionक्रम का वर्णन करने के लिए किया जाता है:


<syntaxhighlight lang="smalltalk">view layout [text "Hello world!" button "Quit" [quit]]</syntaxhighlight>
<syntaxhighlight lang="smalltalk">view layout [text "Hello world!" button "Quit" [quit]]</syntaxhighlight>
Line 61: Line 65:
[[File:R3-GUIHelloWorld.png|R3-GUI हेलो वर्ल्ड उदाहरण]]
[[File:R3-GUIHelloWorld.png|R3-GUI हेलो वर्ल्ड उदाहरण]]


===बोलियाँ===
===उपभाषा===
रीबोल डोमेन-विशिष्ट भाषाएँ, जिन्हें बोलियाँ कहा जाता है, एक विशिष्ट उद्देश्य के लिए अनुकूलित सूक्ष्म भाषाएँ हैं। किसी प्रोग्राम की स्थापना के दौरान व्यावसायिक नियमों, ग्राफिकल यूजर इंटरफेस या स्क्रीन के अनुक्रम को परिभाषित करने के लिए बोलियों का उपयोग किया जा सकता है। उपयोगकर्ता अपनी स्वयं की बोलियों को परिभाषित कर सकते हैं, किसी भी मौजूदा रिबोल शब्द का पुन: उपयोग कर सकते हैं और इसे उस बोली में एक विशिष्ट अर्थ दे सकते हैं।<ref name="RD" />बोलियों की व्याख्या एक विशिष्ट तरीके से रीबोल ब्लॉक (या पार्सिंग स्ट्रिंग्स) को संसाधित करने वाले कार्यों द्वारा की जाती है।
रीबोल डोमेन-विशिष्ट लैंग्वेजएँ, जिन्हें उपभाषा कहा जाता है, एक विशिष्ट उद्देश्य के लिए अनुकूलित सूक्ष्म लैंग्वेजएँ हैं। किसी प्रोग्राम की स्थापना के दौरान व्यावसायिक नियमों, ग्राफिकल यूजर इंटरफेस या स्क्रीन के अनुक्रम को परिभाषित करने के लिए उपभाषा का उपयोग किया जा सकता है। उपयोगकर्ता अपनी स्वयं की उपभाषा को परिभाषित कर सकते हैं, किसी भी उपस्थिता रिबोल शब्द का पुन: उपयोग कर सकते हैं और इसे उस उपभाषा में एक विशिष्ट अर्थ दे सकते हैं।<ref name="RD" />उपभाषा की व्याख्या एक विशिष्ट तरीके से रीबोल ब्लॉक (या पार्सिंग स्ट्रिंग्स) को संसाधित करने वाले functionों द्वारा की जाती है।


रेबोल की बोली लगाने की क्षमता का एक उदाहरण शब्द के साथ देखा जा सकता है <code>''return''</code>. डेटा विनिमय बोली में <code>''return''</code> मात्र एक शब्द है जिसका कोई विशेष अर्थ नहीं है। दो बोली में, <code>''return''</code> एक वैश्विक वैरिएबल है जो एक मूल फ़ंक्शन (कंप्यूटर विज्ञान) को संदर्भित करता है जो फ़ंक्शन परिणाम मान को वापस भेजता है।<ref name="OG">Goldman, E., Blanton, J. (2000). ''REBOL: The Official Guide.'' McGraw-Hill Osborne Media. {{ISBN|0-07-212279-X}}.</ref> विज़ुअल इंटरफ़ेस बोली (VID) में, <code>''return''</code> एक [[कीवर्ड (कंप्यूटर प्रोग्रामिंग)]] है जो लेआउट इंजन को [[कैरिज रिटर्न]] अनुकरण करने, रेंडरिंग पेन को अगली पंक्ति की शुरुआत तक ले जाने का कारण बनता है।<ref name="RP" />


ग्राफिकल क्षमताओं वाले एक रिबोल दुभाषिया को कई बोलियों को समझना और व्याख्या करना होगा। नीचे दी गई तालिका महत्व के क्रम में सबसे महत्वपूर्ण सूचीबद्ध करती है।
रेबोल की उपभाषा लगाने की क्षमता का एक उदाहरण शब्द के साथ देखा जा सकता है <code>''return''</code>. डेटा विनिमय उपभाषा में <code>''return''</code> मात्र एक शब्द है जिसका कोई विशेष अर्थ नहीं है। दो उपभाषा में, <code>''return''</code> एक वैश्विक वैरिएबल है जो एक मूल फ़ंक्शन (कंप्यूटर विज्ञान) को संदर्भित करता है जो फ़ंक्शन परिणाम मान को वापस भेजता है।<ref name="OG">Goldman, E., Blanton, J. (2000). ''REBOL: The Official Guide.'' McGraw-Hill Osborne Media. {{ISBN|0-07-212279-X}}.</ref> विज़ुअल इंटरफ़ेस उपभाषा (VID) में, <code>''return''</code> एक कीवर्ड (कंप्यूटर प्रोग्रामिंग) है जो लेआउट इंजन को [[कैरिज रिटर्न]] अनुकरण करने, रेंडरिंग पेन को अगली पंक्ति की शुरुआत तक ले जाने का कारण बनता है।<ref name="RP" />
 
ग्राफिकल क्षमताओं वाले एक रिबोल उपभाषा को कई उपभाषा को समझना और व्याख्या करना होगा। नीचे दी गई तालिका महत्व के क्रम में सबसे महत्वपूर्ण सूचीबद्ध करती है।
{| class="wikitable"
{| class="wikitable"
|-
|-
! Dialect name
! उपभाषा का नाम
! Interpreted by
! द्वारा व्याख्या की गई
! Purpose
! उद्देश्य
|-
|-
| Data exchange dialect
| डेटा विनिमय उपभाषा
| <code>load</code> function
| <code>load</code>function
| represents data and metadata; common platform for Rebol dialects
| डेटा और मेटाडेटा का प्रतिनिधित्व करता है; रीबोल उपभाषा के लिए साझा मंच
|-
|-
| Do dialect
| उपभाषा डू
| <code>do</code> function
| <code>do</code>function
| programming
| प्रोग्रामिंग
|-
|-
| Parse dialect
| पार्स उपभाषा
| <code>parse</code> function
| <code>parse</code>function
| [[pattern matching]]
| पैटर्न मिलान
|-
|-
| Function specification dialect
| फ़ंक्शन विशिष्टता उपभाषा
| <code>make</code> function
| <code>make</code>function
| [[function (computer science)|function]] definition; [[functional programming]]
| फ़ंक्शन परिलैंग्वेज; कार्यात्मक प्रोग्रामिंग
|-
|-
| Object specification dialect
| वस्तु विशिष्टता उपभाषा
| <code>make</code> function
| <code>make</code>function
| [[object (computer science)|object]] definition/inheritance; [[prototype-based programming]]
| वस्तु परिलैंग्वेज/विरासत; प्रोटोटाइप-आधारित प्रोग्रामिंग
|-
|-
| Visual interface dialect (VID)<br>or<br>RebGUI
| विज़ुअल इंटरफ़ेस उपभाषा (VID)
| <code>layout</code> function<br>or<br><code>display</code> function
या
| specifies [[graphical user interface]]
RebGUI
| <code>layout</code>function
या
<code>display</code>function
| ग्राफिकल यूजर इंटरफ़ेस निर्दिष्ट करता है
|-
|-
| Draw dialect
| उपभाषा बनाएं
| <code>view</code> function
| <code>view</code>function
| defines graphical elements (lines, polygons, etc.)
| ग्राफिकल तत्वों (रेखाएँ, बहुभुज, आदि) को परिभाषित करता है
|-
|-
| Script specification dialect
| स्क्रिप्ट विशिष्टता उपभाषा
| <code>do</code> function
| <code>do</code>function
| script definition
| स्क्रिप्ट परिलैंग्वेज
|-
|-
| Security policy dialect
| सुरक्षा नीति उपभाषा
| <code>secure</code> function
| <code>secure</code>function
| specifies security policy
| सुरक्षा नीति निर्दिष्ट करता है
|}
|}




===सिंटेक्स===
===सिंटेक्स===
रीबोल सिंटैक्स (प्रोग्रामिंग भाषाएं) फ्री-फॉर्म भाषा है|फ्री-फॉर्म, विशिष्ट स्थिति की आवश्यकता नहीं है। हालाँकि, [[इंडेंट शैली]] का उपयोग अक्सर पाठ की संरचना को मानव पाठकों तक बेहतर ढंग से पहुँचाने के लिए किया जाता है।
रीबोल सिंटैक्स फ्री-फॉर्म है, जिसके लिए विशिष्ट स्थिति की आवश्यकता नहीं होती है। हालाँकि, इंडेंटेशन का उपयोग प्रायः पाठ की संरचना को मानव पाठकों तक बेहतर ढंग से पहुंचाने के लिए किया जाता है।
 
विभिन्न बोलियों के वाक्यात्मक गुण भिन्न हो सकते हैं। सभी रेबोल बोलियों के लिए सामान्य मंच डेटा विनिमय बोली है; अन्य बोलियाँ आमतौर पर इससे ली गई हैं। सभी बोलियों के लिए सामान्य मंच होने के अलावा, डेटा एक्सचेंज बोली का उपयोग सीधे डेटा और मेटाडेटा का प्रतिनिधित्व करने, डेटा संरचनाओं को भरने, इंटरनेट पर डेटा भेजने और उन्हें डेटा स्टोरेज में सहेजने के लिए किया जाता है।
 
[[सी (प्रोग्रामिंग भाषा)]] जैसी प्रोग्रामिंग भाषाओं के विपरीत, डेटा एक्सचेंज बोली में [[घोषणा (कंप्यूटर विज्ञान)]], [[कथन (प्रोग्रामिंग)]], [[अभिव्यक्ति (प्रोग्रामिंग)]] या कीवर्ड शामिल नहीं होते हैं। एक वैध डेटा एक्सचेंज डायलेक्ट टेक्स्ट स्ट्रीम एक ट्री डेटा संरचना है जिसमें ब्लॉक (रूट ब्लॉक अंतर्निहित है, सबब्लॉक [[ब्रैकेट]] द्वारा सीमांकित हैं), पैरेंस (ब्रैकेट द्वारा सीमांकित), [[स्ट्रिंग (कंप्यूटर विज्ञान)]] (मल्टी-लाइन स्ट्रिंग्स के लिए उपयुक्त [[उद्धरण चिह्न ग्लिफ़]] या ब्रैकेट द्वारा सीमांकित; गैर-मुद्रण योग्य वर्णों के लिए [[ कैरेट अंकन ]] का उपयोग किया जाता है), [[यूनिफ़ॉर्म रिसोर्स लोकेटर]], ई-मेल पते, फ़ाइलें, पथ या अन्य [[ अदिश (कंप्यूटिंग) ]]। [[ALGOL]] [[ब्लॉक (प्रोग्रामिंग)]] के विपरीत, रीबोल ब्लॉक लिस्प (प्रोग्रामिंग भाषा) में उद्धृत [[ एस-अभिव्यक्ति ]] के समान समग्र मान हैं। यह तथ्य कि कोड रीबोल ब्लॉक के रूप में लिखा गया है, भाषा को समरूप बनाता है।<ref name="OG" />


ब्लॉक के साथ-साथ माता-पिता में अन्य समग्र मान हो सकते हैं (एक ब्लॉक में उपब्लॉक, माता-पिता, स्ट्रिंग्स, ...) या स्केलर (कंप्यूटिंग) जैसे शब्द, सेट-शब्द ([[कोलन (विराम चिह्न)]] द्वारा प्रत्यय वाले शब्द), गेट-शब्द (कोलन द्वारा उपसर्ग किए गए शब्द), लिट-शब्द ([[एपॉस्ट्रॉफी (चिह्न)]] द्वारा उपसर्ग किए गए शब्द), संख्याएं, धन, [[अक्षरों को सांकेतिक अक्षरों में बदलना]] इत्यादि, व्हाइटस्पेस (कंप्यूटर विज्ञान) द्वारा अलग किए गए हो सकते हैं। शब्दों में विशेष वर्णों की अनुमति है, इसलिए <code>a+b</code> एक विपरीत शब्द है <code>a + b</code>, जो रिक्त स्थान द्वारा अलग किए गए तीन शब्दों का एक क्रम है।
विभिन्न उपभाषा के वाक्यात्मक गुण भिन्न हो सकते हैं। सभी रेबोल उपभाषा के लिए सामान्य मंच डेटा विनिमय उपभाषा है; अन्य उपभाषा साधारणतया इससे ली गई हैं। सभी उपभाषा के लिए सामान्य मंच होने के अलावा, डेटा एक्सचेंज उपभाषा का उपयोग सीधे डेटा और मेटाडेटा का प्रतिनिधित्व करने, डेटा संरचनाओं को भरने, इंटरनेट पर डेटा भेजने और उन्हें डेटा स्टोरेज में सहेजने के लिए किया जाता है।


[[टिप्पणी (कंप्यूटर प्रोग्रामिंग)]] पंक्ति के अंत तक अर्धविराम के बाद दिखाई दे सकती है। बहु-पंक्ति टिप्पणियाँ या टिप्पणियाँ जिन्हें लेक्सिकल पार्सर द्वारा अनदेखा नहीं किया जाता है, उन्हें बहु-पंक्ति स्ट्रिंग्स जैसे सामान्य डेटाटाइप का उपयोग करके लिखा जा सकता है।<ref name="OG" />
[[सी (प्रोग्रामिंग भाषा)|सी (प्रोग्रामिंग लैंग्वेज)]] जैसी प्रोग्रामिंग लैंग्वेज के विपरीत, डेटा एक्सचेंज उपभाषा में डिक्लेरेशन (कंप्यूटर विज्ञान), स्टेटमेंट्स (प्रोग्रामिंग), एक्सप्रेशन (प्रोग्रामिंग) या कीवर्ड सम्मिलित नहीं होते हैं। एक वैध डेटा एक्सचेंज डायलेक्ट टेक्स्ट स्ट्रीम एक ट्री डेटा संरचना है जिसमें ब्लॉक (रूट ब्लॉक अंतर्निहित है, सबब्लॉक [[ब्रैकेट]] द्वारा सीमांकित हैं), पैरेंस (ब्रैकेट द्वारा सीमांकित), [[स्ट्रिंग (कंप्यूटर विज्ञान)]] (मल्टी-लाइन स्ट्रिंग्स के लिए उपयुक्त उद्धरण चिह्न ग्लिफ़ या ब्रैकेट द्वारा सीमांकित; गैर-मुद्रण योग्य वर्णों के लिए कैरेट अंकन का उपयोग किया जाता है), यूनिफ़ॉर्म रिसोर्स लोकेटर, ई-मेल पते, फ़ाइलें, पथ या अन्य  अदिश (कंप्यूटिंग) है। ALGOL [[ब्लॉक (प्रोग्रामिंग)]] के विपरीत, रीबोल ब्लॉक लिस्प (प्रोग्रामिंग लैंग्वेज) में उद्धृत [[ एस-अभिव्यक्ति | एस-एक्सप्रेशन]] के समान समग्र मान हैं। यह तथ्य कि कोड रीबोल ब्लॉक के रूप में लिखा गया है, लैंग्वेज को समरूप बनाता है।<ref name="OG" />


ब्लॉक के साथ-साथ पैरेन में अन्य मिश्रित मान भी हो सकते हैं (एक ब्लॉक में सबब्लॉक, पैरेन, स्ट्रिंग्स, ...) या स्केलर मान जैसे शब्द, सेट-वर्ड (कोलन द्वारा प्रत्यय वाले शब्द), गेट-वर्ड (उपसर्ग द्वारा लगाए गए शब्द) हो सकते हैं। बृहदान्त्र), शाब्दिक शब्द (एपोस्ट्रोफ द्वारा उपसर्ग किए गए शब्द), संख्याएं, धन, वर्ण, आदि, रिक्त स्थान द्वारा अलग किए गए। शब्दों में विशेष वर्णों की अनुमति है, इसलिए a+b एक शब्द है जो a + b से भिन्न है, जो रिक्त स्थान से अलग किए गए तीन शब्दों का एक क्रम है।


===शब्दार्थ===
टिप्पणियाँ अर्धविराम के बाद पंक्ति के अंत तक दिखाई दे सकती हैं। बहु-पंक्ति टिप्पणियाँ या टिप्पणियाँ जिन्हें लेक्सिकल पार्सर द्वारा अनदेखा नहीं किया जाता है, उन्हें बहु-पंक्ति स्ट्रिंग जैसे "सामान्य" डेटाटाइप का उपयोग करके लिखा जा सकता है।<ref name="OG" />
डोमेन-विशिष्ट भाषा वाले ब्लॉक को विशिष्ट मूल्यांकनकर्ता कार्यों के लिए [[तर्क (कंप्यूटर विज्ञान)]] के रूप में प्रस्तुत किया जा सकता है।<ref name="RD" />


===सीमेन्टिकी===
डोमेन-विशिष्ट लैंग्वेज वाले ब्लॉक को विशिष्ट मूल्यांकनकर्ता functionों के लिए [[तर्क (कंप्यूटर विज्ञान)]] के रूप में प्रस्तुत किया जा सकता है।<ref name="RD" />


====डू====
सबसे अधिक उपयोग किया जाने वाला मूल्यांकनकर्ता copy function है। इसका उपयोग डिफ़ॉल्ट रूप से इंटरप्रेटर कंसोल में टेक्स्ट इनपुट की व्याख्या करने के लिए किया जाता है।


====करो====
सबसे अधिक बार उपयोग किया जाने वाला मूल्यांकनकर्ता है <code>do</code> समारोह। इसका उपयोग डिफ़ॉल्ट रूप से इंटरप्रेटर [[कमांड लाइन इंटरफेस]] में टेक्स्ट इनपुट की व्याख्या करने के लिए किया जाता है।


दो बोली द्वारा व्याख्या की गई <code>do</code> फ़ंक्शन, एक अभिव्यक्ति-उन्मुख प्रोग्रामिंग भाषा है|डेटा विनिमय बोली की अभिव्यक्ति-उन्मुख उपभाषा है। भाषा की मुख्य शब्दार्थ इकाई अभिव्यक्ति (प्रोग्रामिंग) है। ALGOL से आने वाली अनिवार्य प्रोग्रामिंग भाषाओं के विपरीत, do बोली में न तो कीवर्ड होते हैं, न ही कथन।
दो उपभाषा द्वारा व्याख्या की गई copy function, एक एक्सप्रेशन-उन्मुख प्रोग्रामिंग लैंग्वेज है|डेटा विनिमय उपभाषा की एक्सप्रेशन-उन्मुख उपलैंग्वेज है। लैंग्वेज की मुख्य सीमेन्टिकी इकाई एक्सप्रेशन (प्रोग्रामिंग) है। ALGOL से आने वाली अनिवार्य प्रोग्रामिंग लैंग्वेज के विपरीत, do उपभाषा में न तो कीवर्ड होते हैं, न ही स्टेटमेंट्स है।


शब्दों का उपयोग [[ मामले की संवेदनशीलता ]]|केस-इनसेंसिटिव [[ चर (प्रोग्रामिंग) ]] के रूप में किया जाता है। सभी [[गतिशील रूप से टाइप की गई भाषा]]ओं की तरह, चर का कोई संबद्ध प्रकार नहीं होता है, प्रकार मानों से संबद्ध होता है। परिणाम, यानी किसी शब्द का मूल्यांकन तब लौटाया जाता है, जब कोई शब्द सामने आता है <code>do</code> समारोह। किसी शब्द के सेट-वर्ड रूप का उपयोग [[असाइनमेंट (कंप्यूटर विज्ञान)]] के लिए किया जा सकता है। स्टेटमेंट न होने पर, असाइनमेंट, साइड-इफेक्ट (कंप्यूटर विज्ञान) के साथ | साइड-इफेक्ट वाले कार्यों का उपयोग [[अनिवार्य प्रोग्रामिंग]] के लिए किया जा सकता है।<ref name="OG" />
शब्दों का उपयोग केस-असंवेदनशील चर के रूप में किया जाता है। सभी गतिशील रूप से टाइप की गई लैंग्वेज की तरह, वेरिएबल का कोई संबद्ध प्रकार नहीं होता है, प्रकार मानों से जुड़ा होता है। परिणाम, यानी किसी शब्द का मूल्यांकन तब लौटाया जाता है जब <code>copy</code> function द्वारा किसी शब्द का सामना किया जाता है। किसी शब्द के सेट-वर्ड फॉर्म का उपयोग असाइनमेंट के लिए किया जा सकता है। स्टेटमेंट न होने पर, साइड-इफेक्ट वाले functionों के साथ-साथ असाइनमेंट का उपयोग अनिवार्य प्रोग्रामिंग के लिए किया जा सकता है।<ref name="OG" />


रूट ब्लॉक के सबब्लॉक स्वयं का मूल्यांकन करते हैं। इस संपत्ति का उपयोग डेटा ब्लॉक को संभालने के लिए, प्रवाह कार्यों को नियंत्रित करने के लिए तर्क के रूप में ब्लॉक सबमिट करके [[संरचित प्रोग्रामिंग]] के लिए किया जाता है <code>if</code>, <code>either</code>, <code>loop</code>, आदि, और बोली लगाने के लिए, जब एक ब्लॉक को एक विशिष्ट दुभाषिया फ़ंक्शन में पास किया जाता है।<ref name="RD" />
रूट ब्लॉक के सबब्लॉक स्वयं का मूल्यांकन करते हैं। इस संपत्ति का उपयोग डेटा ब्लॉक को संभालने के लिए, प्रवाह functionों को नियंत्रित करने के लिए तर्क के रूप में ब्लॉक सबमिट करके [[संरचित प्रोग्रामिंग]] के लिए किया जाता है <code>if</code>, <code>either</code>, <code>loop</code>, आदि, और उपभाषा लगाने के लिए, जब एक ब्लॉक को एक विशिष्ट उपभाषा फ़ंक्शन में पास किया जाता है।<ref name="RD" />


ध्यान देने योग्य एक विशिष्ट समस्या यह है कि चरों को निर्दिष्ट समग्र मानों की प्रतिलिपि नहीं बनाई जाती है। प्रतिलिपि बनाने के लिए, मान को पास करना होगा <code>copy</code> समारोह।<ref name="OG" />
ध्यान देने योग्य एक विशिष्ट समस्या यह है कि चरों को निर्दिष्ट समग्र मानों की प्रतिलिपि नहीं बनाई जाती है। प्रतिलिपि बनाने के लिए, मान को पास करना <code>copy</code> function होगा।<ref name="OG" />


<code>do</code> e> फ़ंक्शन आम तौर पर एक [[पोलिश संकेतन]] का अनुसरण करता है, जहां एक फ़ंक्शन उन तर्कों को संसाधित करता है जो उसका अनुसरण करते हैं। हालाँकि, इन्फ़िक्स [[ऑपरेटर (प्रोग्रामिंग)]] का उपयोग करते हुए [[इन्फिक्स संकेतन]] भी मौजूद है। इन्फिक्स मूल्यांकन को उपसर्ग मूल्यांकन पर प्राथमिकता दी जाती है। उदाहरण के लिए,
<code>do</code> e> function साधारणतया एक [[पोलिश संकेतन]] का अनुसरण करता है, जहां एक फ़ंक्शन उन तर्कों को संसाधित करता है जो उसका अनुसरण करते हैं। हालाँकि, इन्फ़िक्स ऑपरेटर (प्रोग्रामिंग) का उपयोग करते हुए [[इन्फिक्स संकेतन]] भी उपस्थित है। इन्फिक्स मूल्यांकन को उपसर्ग मूल्यांकन पर प्राथमिकता दी जाती है। उदाहरण के लिए,
  निरपेक्ष मान -2 + 3
  abs -2 + 3
1 लौटाता है, क्योंकि इन्फ़िक्स जोड़ को निरपेक्ष मान की गणना पर प्राथमिकता दी जाती है। इन्फिक्स अभिव्यक्तियों का मूल्यांकन करते समय, मूल्यांकन का क्रम बाएं से दाएं होता है, कोई भी ऑपरेटर दूसरे के ऊपर संचालन का क्रम नहीं लेता है। उदाहरण के लिए,
1 लौटाता है, क्योंकि इन्फ़िक्स जोड़ को निरपेक्ष मान की गणना पर प्राथमिकता दी जाती है। इन्फिक्स एक्सप्रेशनयों का मूल्यांकन करते समय, मूल्यांकन का क्रम बाएं से दाएं होता है, कोई भी ऑपरेटर दूसरे के ऊपर संचालन का क्रम नहीं लेता है। उदाहरण के लिए,
<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
2 + 3 * 4
2 + 3 * 4
</syntaxhighlight>
</syntaxhighlight>
रिटर्न 20, जबकि गुणन को प्राथमिकता देने वाले मूल्यांकन से 14 प्राप्त होगा। सभी ऑपरेटरों के पास उपसर्ग संस्करण होते हैं। <code>Do</code> आमतौर पर तर्कों को किसी फ़ंक्शन में पास करने से पहले उनका मूल्यांकन करता है। तो, नीचे दी गई अभिव्यक्ति:
रिटर्न 20, जबकि गुणन को प्राथमिकता देने वाले मूल्यांकन से 14 प्राप्त होगा। सभी ऑपरेटरों के पास उपसर्ग संस्करण होते हैं। <code>Do</code> साधारणतया तर्कों को किसी फ़ंक्शन में पास करने से पहले उनका मूल्यांकन करता है। तो, नीचे दी गई एक्सप्रेशन:
<div क्लास= प्लेनलिंक्स >
<div क्लास= प्लेनलिंक्स >
  http://en.wikipedia.org/wiki/Rebol पढ़ें प्रिंट करें
  [http://en.wikipedia.org/wiki/Rebol http://en.wikipedia.org/wiki/रीबोल] पढ़ें प्रिंट करें
</div>
</div>
पहले विकिपीडिया रिबोल पेज को पढ़ता है और फिर परिणाम को पास करता है <code>print</code> समारोह। मूल्यांकन के क्रम को बदलने के लिए कोष्ठक का उपयोग किया जा सकता है। पोलिश संकेतन का उपयोग करके, अभिव्यक्तियों में कोष्ठक के उपयोग से बचा जा सकता है।<ref name="OG" />
पहले विकिपीडिया रीबोल पृष्ठ को पढ़ता है और फिर परिणाम को <code>print</code> function में भेजता है। मूल्यांकन के क्रम को बदलने के लिए कोष्ठक का उपयोग किया जा सकता है। उपसर्ग संकेतन का उपयोग करके, अभिव्यक्तियों में कोष्ठक के उपयोग से बचा जा सकता है।<ref name="OG" />


सरल प्राथमिकता नियम दोनों एक लाभ हैं:
सरल प्राथमिकता नियम दोनों एक लाभ हैं:
* अभिव्यक्ति लिखते समय प्राथमिकता तालिकाओं से परामर्श लेने की आवश्यकता नहीं है
* एक्सप्रेशन लिखते समय प्राथमिकता तालिकाओं से परामर्श लेने की आवश्यकता नहीं है
* जब कोई नया ऑपरेटर परिभाषित किया जाता है तो प्राथमिकता तालिकाओं को फिर से लिखने की आवश्यकता नहीं होती है
* जब कोई नया ऑपरेटर परिभाषित किया जाता है तो प्राथमिकता तालिकाओं को फिर से लिखने की आवश्यकता नहीं होती है
* भावों को इन्फ़िक्स से प्रीफ़िक्स नोटेशन में और इसके विपरीत आसानी से [[लिप्यंतरण]] किया जा सकता है
* भावों को इन्फ़िक्स से प्रीफ़िक्स नोटेशन में और इसके विपरीत आसानी से [[लिप्यंतरण]] किया जा सकता है
Line 158: Line 165:
* अधिक पारंपरिक प्राथमिकता नियमों के आदी उपयोगकर्ता आसानी से गलती कर सकते हैं<ref name="RD" />
* अधिक पारंपरिक प्राथमिकता नियमों के आदी उपयोगकर्ता आसानी से गलती कर सकते हैं<ref name="RD" />


=== पार्स (<code>parse</code>) ===
<code>parse</code> e> function का उपयोग अधिमानतः उपभाषा को निर्दिष्ट करने, सत्यापित करने, बदलने और व्याख्या करने के लिए किया जाता है। यह रन टाइम पर पार्स एक्सप्रेशन का मिलान करके ऐसा करता है।
पार्स फ़ंक्शन का उपयोग अधिमानतः उपभाषा को निर्दिष्ट करने, मान्य करने, रूपांतरित करने और व्याख्या करने के लिए किया जाता है। यह रन टाइम पर पार्स अभिव्यक्तियों का मिलान करके ऐसा करता है।<ref name="RD" />


====पार्स==== <code>parse</code> ई> फ़ंक्शन का उपयोग अधिमानतः बोलियों को निर्दिष्ट करने, सत्यापित करने, बदलने और व्याख्या करने के लिए किया जाता है। यह रन टाइम पर पार्स एक्सप्रेशन का मिलान करके ऐसा करता है।<ref name="RD" />
पार्स एक्सप्रेशनयाँ पार्स उपभाषा में लिखी जाती हैं, जो दो उपभाषा की तरह, डेटा विनिमय उपभाषा की एक एक्सप्रेशन-उन्मुख उपलैंग्वेज है। डू उपभाषा के विपरीत, पार्स उपभाषा ऑपरेटरों और सबसे महत्वपूर्ण टर्मिनल प्रतीक का प्रतिनिधित्व करने वाले कीवर्ड का उपयोग करती है, इन्फिक्स पार्सिंग ऑपरेटरों के पास उपसर्ग समकक्ष नहीं होते हैं और प्राथमिकता नियमों का उपयोग करते हैं (अनुक्रम में पसंद की तुलना में अधिक प्राथमिकता होती है)।<ref name="RD" />


पार्स अभिव्यक्तियाँ पार्स बोली में लिखी जाती हैं, जो दो बोली की तरह, डेटा विनिमय बोली की एक अभिव्यक्ति-उन्मुख उपभाषा है। डू बोली के विपरीत, पार्स बोली ऑपरेटरों और सबसे महत्वपूर्ण [[टर्मिनल प्रतीक]] का प्रतिनिधित्व करने वाले कीवर्ड का उपयोग करती है, इन्फिक्स पार्सिंग ऑपरेटरों के पास उपसर्ग समकक्ष नहीं होते हैं और प्राथमिकता नियमों का उपयोग करते हैं (अनुक्रम में पसंद की तुलना में अधिक प्राथमिकता होती है)।<ref name="RD" />
पार्सिंग प्रक्रिया के दौरान की जाने वाली कार्रवाइयों को भी सम्मिलित किया जा सकता है और <code>parse</code> function का उपयोग ब्लॉक या स्ट्रिंग्स को संसाधित करने के लिए किया जा सकता है। स्ट्रिंग पार्सिंग स्तर पर <code>parse</code> को वर्णों और सीमांककों को ध्यान में रखते हुए "निम्न स्तर" पार्सिंग को संभालना होगा। ब्लॉक पार्सिंग उच्च स्तर की है, रीबोल मानों के स्तर पर स्कैनिंग को संभालती  है।<ref name="RD" />


पार्सिंग प्रक्रिया के दौरान की जाने वाली कार्रवाइयों को भी शामिल किया जा सकता है <code>parse</code> फ़ंक्शन का उपयोग ब्लॉक या स्ट्रिंग को संसाधित करने के लिए किया जा सकता है। स्ट्रिंग पार्सिंग स्तर पर <code>parse</code> [[चरित्र (कंप्यूटिंग)]] और सीमांकक को ध्यान में रखते हुए, निम्न स्तर के पार्सिंग को संभालना चाहिए। ब्लॉक पार्सिंग उच्च स्तर की है, रीबोल मानों के स्तर पर स्कैनिंग को संभालती है।<ref name="RD" />


पार्स बोली [[ऊपर से नीचे पार्सिंग भाषा]] या पार्सिंग अभिव्यक्ति व्याकरण (पीईजी) द्वारा दर्शाए गए व्याकरणों के परिवार से संबंधित है। मुख्य समानता परिवार के सभी सदस्यों के पास अनुक्रम और विकल्प ऑपरेटरों की उपस्थिति है। पार्स बोली वाक्यविन्यास और पार्स बोली और पीईजी के बीच समानताएं एक पार्सिंग अभिव्यक्ति व्याकरण के इस लिप्यंतरण द्वारा चित्रित की गई हैं#उदाहरण जो एक अंकगणितीय अभिव्यक्ति को पार्स करता है:
पार्स उपभाषा ऊपर से नीचे पार्सिंग लैंग्वेज या पार्सिंग अभिव्यक्ति व्याकरण (पीईजी) द्वारा दर्शाए गए व्याकरणों के परिवार से संबंधित है। मुख्य समानता परिवार के सभी सदस्यों के पास अनुक्रम और विकल्प ऑपरेटरों की उपस्थिति है। पार्स उपभाषा वाक्य रचना और पार्स उपभाषा और पीईजी के बीच समानताएं एक पीईजी उदाहरण के इस लिप्यंतरण द्वारा चित्रित की गई हैं जो एक अंकगणितीय अभिव्यक्ति को पार्स करती है:
<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
Digit: charset [#"0" - #"9"]
Digit: charset [#"0" - #"9"]
Line 175: Line 185:




==[[कार्यान्वयन]]==
==[[कार्यान्वयन|functionान्वयन]]==
आधिकारिक रीबोल 2.7.8 कार्यान्वयन कई संस्करणों (/कोर, /व्यू, /कमांड, /एसडीके और /आईओएस) में उपलब्ध है। /कोर और /व्यू दोनों संस्करण [[स्वतंत्र रूप से पुनर्वितरण योग्य सॉफ़्टवेयर]] हैं।<ref name="lic" />
आधिकारिक रीबोल 2.7.8 functionान्वयन कई संस्करणों (''/Core'', ''/View'', ''/Command'', ''/SDK'' and ''/IOS'') में उपलब्ध है। /कोर और /व्यू दोनों संस्करण स्वतंत्र रूप से पुनर्वितरण योग्य सॉफ़्टवेयर हैं।<ref name="lic" />


रनटाइम वातावरण को एकल निष्पादन योग्य फ़ाइल में संग्रहीत किया जाता है। Rebol/Core 2.7.8, कंसोल संस्करण, लगभग 300 KB का है और Rebol/View 2.7.8, [[ग्राफिकल यूज़र इंटरफ़ेस]] संस्करण, लगभग 650 KB आकार का है।
रनटाइम वातावरण को एकल निष्पादन योग्य फ़ाइल में संग्रहीत किया जाता है। रीबोल/Core 2.7.8, कंसोल संस्करण, लगभग 300 KB का है और रीबोल/व्यू 2.7.8, [[ग्राफिकल यूज़र इंटरफ़ेस]] संस्करण, लगभग 650 KB आकार का है।


रीबोल/व्यू क्रॉस-प्लेटफ़ॉर्म|प्लेटफ़ॉर्म-स्वतंत्र ग्राफिक्स और ध्वनि पहुंच प्रदान करता है, और अपने स्वयं के विंडोिंग टूलकिट और शैलियों के एक्स्टेंसिबल सेट ([[जीयूआई विजेट]]) के साथ आता है। विस्तारित संस्करण, जैसे रीबोल/कमांड 2.7.8 या रीबोल/एसडीके 2.7.8 के लिए सशुल्क लाइसेंस की आवश्यकता होती है; वे ओडीबीसी डेटा एक्सेस और स्टैंडअलोन निष्पादन योग्य फ़ाइलें बनाने का विकल्प जैसी सुविधाएं जोड़ते हैं।{{Citation needed|date=September 2016}}
रीबोल/व्यू क्रॉस-प्लेटफ़ॉर्म और ध्वनि पहुंच प्रदान करता है, और अपने स्वयं के विंडोिंग टूलकिट और शैलियों के एक्स्टेंसिबल सेट ([[जीयूआई विजेट]]) के साथ आता है। विस्तारित संस्करण, जैसे रीबोल/कमांड 2.7.8 या रीबोल/एसडीके 2.7.8 के लिए सशुल्क लाइसेंस की आवश्यकता होती है; वे ओडीबीसी डेटा एक्सेस और स्टैंडअलोन निष्पादन योग्य फ़ाइलें बनाने का विकल्प जैसी सुविधाएं जोड़ते हैं।


==विरासत==
==विरासत==
* रीबोल को डगलस क्रॉकफोर्ड द्वारा [[जावास्क्रिप्ट ऑब्जेक्ट नोटेशन]] की प्रेरणाओं में से एक के रूप में नामित किया गया था।<ref name="JSON" />* रीबोल ने ओपन-सोर्स ओर्का प्रोजेक्ट को प्रेरित किया, जो एक व्याख्या की गई रीबोल जैसी भाषा है।<ref>The [http://freecode.com/projects/rebol-orca/ rebol-orca project] at [[Freecode]]</ref>
* रीबोल को डगलस क्रॉकफोर्ड द्वारा [[जावास्क्रिप्ट ऑब्जेक्ट नोटेशन]] की प्रेरणाओं में से एक के रूप में नामित किया गया था।<ref name="JSON" />* रीबोल ने ओपन-सोर्स ओर्का प्रोजेक्ट को प्रेरित किया, जो एक व्याख्या की गई रीबोल जैसी लैंग्वेज है।<ref>The [http://freecode.com/projects/rebol-orca/ rebol-orca project] at [[Freecode]]</ref>
* [http://urlan.sourceforge.net/boron/ बोरोन] एक व्याख्या की गई, होमोइकोनिक भाषा है जो रीबोल से प्रेरित और उसके समान है, जो डोमेन विशिष्ट भाषाओं को एम्बेड करने के लिए है। इसे LGPLv3 की शर्तों के तहत लाइसेंस प्राप्त C लाइब्रेरी के रूप में कार्यान्वित किया गया है।
* [http://urlan.sourceforge.net/boron/ बोरोन] एक व्याख्या की गई, होमोइकोनिक लैंग्वेज है जो रीबोल से प्रेरित और उसके समान है, जो डोमेन विशिष्ट लैंग्वेज को एम्बेड करने के लिए है। इसे LGPLv3 की शर्तों के तहत लाइसेंस प्राप्त C लाइब्रेरी के रूप में functionान्वित किया गया है।
* रेड (प्रोग्रामिंग भाषा) सीधे रीबोल से प्रेरित थी, फिर भी रेड के कार्यान्वयन विकल्प विशेष रूप से इसकी कथित सीमाओं पर काबू पाने के लिए तैयार किए गए थे।<ref>The [https://github.com/red/red/blob/master/README.md#red-programming-language Red project] at [[GitHub]]</ref>
* रेड (प्रोग्रामिंग लैंग्वेज) सीधे रीबोल से प्रेरित थी, फिर भी रेड के functionान्वयन विकल्प विशेष रूप से इसकी कथित सीमाओं पर काबू पाने के लिए तैयार किए गए थे।<ref>The [https://github.com/red/red/blob/master/README.md#red-programming-language Red project] at [[GitHub]]</ref>




==यह भी देखें==
==यह भी देखें==
* डोमेन-विशिष्ट भाषा
* डोमेन-विशिष्ट लैंग्वेज
* [[भाषा-उन्मुख प्रोग्रामिंग]]
* [[भाषा-उन्मुख प्रोग्रामिंग|लैंग्वेज-उन्मुख प्रोग्रामिंग]]


==संदर्भ==
==संदर्भ==
Line 203: Line 213:
== बाहरी संबंध ==
== बाहरी संबंध ==
* {{curlie|Computers/Programming/Languages/REBOL|REBOL}}
* {{curlie|Computers/Programming/Languages/REBOL|REBOL}}
* [http://re-bol.com/rebol.html A REBOL tutorial]
* [http://re-bol.com/rebol.html A रीबोल tutorial]
* [http://learnrebol.com/rebol3_book.html Rebol 3 Tutorial]
* [http://learnrebol.com/rebol3_book.html रीबोल 3 Tutorial]
* [https://github.com/Oldes/Rebol3 Rebol 3 (Oldes' fork) sources]
* [https://github.com/Oldes/Rebol3 रीबोल 3 (Oldes' fork) sources]


{{Data Exchange}}
{{Data Exchange}}

Revision as of 20:28, 9 August 2023

Rebol
Rebol logo.png
Paradigmlanguage oriented programming, data exchange, functional, prototype-based, imperative
द्वारा डिज़ाइन किया गयाCarl Sassenrath
DeveloperREBOL Technologies
पहली प्रस्तुति1997; 28 years ago (1997)
Stable release
2.7.8 / January 2011; 14 years ago (2011-01)
Preview release
2.101.0 / December 2012; 13 years ago (2012-12)
टाइपिंग अनुशासनdynamic, strong
ओएसcross-platform
लाइसेंस2.7.8 is Freely redistributable software,[1] 2.101.0 has Apache 2.0 license[2]
फ़ाइल नाम एक्सटेंशनएस.r, .reb[3]
वेबसाइटwww.rebol.com
Influenced by
Self, Forth, Lisp, Logo[4]
Influenced
JSON,[5] Red

रीबोल (/ˈrɛbəl/ REB-əl; ऐतिहासिक रूप से रीबोल) एक क्रॉस-प्लेटफ़ॉर्म [6] डेटा एक्सचेंज लैंग्वेज और नेटवर्क संचार और वितरित कंप्यूटिंग के लिए कार्ल सैसेनराथ द्वारा डिज़ाइन की गई एक बहु-प्रतिमान गतिशील प्रोग्रामिंग लैंग्वेज है। यह द्वंद्वात्मकता की अवधारणा का परिचय देता है: कोड और डेटा के लिए छोटी, अनुकूलित, डोमेन-विशिष्ट लैंग्वेजएं, [6][7] जो कि इसके डिजाइनर कार्ल सैसेनराथ के अनुसार लैंग्वेज की सबसे उल्लेखनीय संपत्ति भी है:

Although it can be used for programming, writing functions, and performing processes, its greatest strength is the ability to easily create domain-specific languages or dialects


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

— Carl Sassenrath[8]

डगलस क्रॉकफ़ोर्ड, जो जावास्क्रिप्ट के विकास में अपनी भागीदारी के लिए जाने जाते हैं, ने रेबोल को "एक अधिक आधुनिक लैंग्वेज के रूप में वर्णित किया है, लेकिन लिस्प के कुछ समान विचारों के साथ, यह सब डेटा के प्रतिनिधित्व पर बनाया गया है जिसे बाद में प्रोग्राम के रूप में निष्पादन योग्य बनाया जाता है" और JSON के प्रभावों में से एक के रूप में निष्पादन योग्य है।[5]


मूल रूप से, लैंग्वेज और इसका आधिकारिक functionान्वयन स्वामित्व सॉफ्टवेयर और क्लोज्ड सोर्स था, जिसे रीबोल Technologies द्वारा विकसित किया गया था। लॉरेंस रोसेन के साथ चर्चा के बाद,[9] रीबोल संस्करण 3 उपभाषा अपाचे 2.0 लाइसेंस के तहत 12 दिसंबर 2012 को जारी किया गया था।[10] पुराने संस्करण केवल बाइनरी रूप में उपलब्ध हैं, और उनके लिए कोई सोर्स रिलीज़ की योजना नहीं है।

रीबोल का उपयोग इंटरनेट अनुप्रयोग प्रक्रिया सामग्री (क्लाइंट- और सर्वर-साइड दोनों), डेटाबेस अनुप्रयोगों, उपयोगिता सॉफ्टवेयर और मल्टीमीडिया अनुप्रयोगों को प्रोग्राम करने के लिए किया गया है।[6]


व्युत्पत्ति

रीबोल प्रारंभ में सभी बड़े अक्षरों में लिखी गई रिलेटिव एक्सप्रेशन बेस्ड ऑब्जेक्ट लैंग्वेज का संक्षिप्त रूप था।[6][8] प्रस्तुत लैंग्वेज नामकरण में आधुनिक प्रवृत्तियों के साथ तालमेल बिठाना, उदाहरणार्थ ऐतिहासिक नाम लिस्प (LISP) को लिस्प से बदलने के कारण, प्रोग्रामर्स ने सभी बड़े अक्षरों में रीबोल (रीबोल) लिखने की प्रथा क्लोज्ड कर दी। सैसेनराथ ने अंततः अपने ब्लॉग पर सामुदायिक बहस में नामकरण का प्रश्न रखा।[11] बाद के लेखन में, ससेनराथ ने लैंग्वेज का नाम रेबोल लिखने की परंपरा को अपनाया था।[12]

इतिहास

पहली बार 1997 में रिलीज़ किया गया, रेबोल को एमिगाओएस के वास्तुकार और प्राथमिक डेवलपर कार्ल ससेनराथ द्वारा 20 साल की अवधि में डिजाइन किया गया था, जो उनके सांकेतिक सीमेन्टिकी के अध्ययन और प्रोग्रामिंग लैंग्वेज लिस्प (प्रोग्रामिंग लैंग्वेज), फोर्थ (प्रोग्रामिंग लैंग्वेज), लोगो (प्रोग्रामिंग लैंग्वेज), और सेल्फ (प्रोग्रामिंग लैंग्वेज) से अवधारणाओं का उपयोग करने पर आधारित था।

  1. रीबोल टेक्नोलॉजीज की स्थापना 1998 में हुई थी।
  2. रीबोल 2, उपभाषा, जो विस्तारित उपभाषा संस्करणों का मूल बन गया, पहली बार 1999 में जारी किया गया था।
    1. रीबोल/कमांड (REBOL/Command), जिसने मजबूत एन्क्रिप्शन और डेटाबेस कनेक्टिविटी खोलें एक्सेस जोड़ा, सितंबर 2000 में जारी किया गया था
    2. रीबोल/व्यू (REBOL/View) को अप्रैल 2001 में रिलीज़ किया गया था, जिसमें मुख्य लैंग्वेज पर ग्राफ़िकल क्षमताएँ जोड़ी गई थीं।
    3. रीबोल/आईओएस (REBOL/IOS), रीबोल के साथ निर्मित एक विस्तार योग्य सहयोग वातावरण अगस्त 2001 में जारी किया गया था।
    4. रीबोल/एस डी के (REBOL/SDK), बाइंडिंग के लिए कर्नेल का विकल्प और साथ ही एक प्रीप्रोसेसर प्रदान करता है, जिसे दिसंबर 2002 में जारी किया गया था।
  3. रीबोल 3 [R3], उपभाषा (कंप्यूटिंग) का नवीनतम संस्करण, के अल्फा संस्करण जनवरी 2008 से आरईबीओएल टेक्नोलॉजीज द्वारा जारी किए गए थे। दिसंबर 2012 में अपाचे 2 प्रोजेक्ट के रूप में रिलीज होने के बाद से, इसे रीबोल समुदाय द्वारा विकसित किया जा रहा है।[13]


डिज़ाइन

उपयोग में आसानी

रीबोल डिज़ाइन सिद्धांतों में से एक सरल चीज़ों को सरल तरीकों से करना है।[6]निम्नलिखित उदाहरण में विज़ुअल इंटरफ़ेस उपभाषा का उपयोग ग्राफिकल यूजर इंटरफ़ेस के साथ एक सरल हेलो वर्ल्ड (Hello World) functionक्रम का वर्णन करने के लिए किया जाता है:

view layout [text "Hello world!" button "Quit" [quit]]

R3-GUI में एक समान उदाहरण इस प्रकार दिखता है:

view [text "Hello world!" button "Quit" on-action [quit]]

R3-GUI हेलो वर्ल्ड उदाहरण

उपभाषा

रीबोल डोमेन-विशिष्ट लैंग्वेजएँ, जिन्हें उपभाषा कहा जाता है, एक विशिष्ट उद्देश्य के लिए अनुकूलित सूक्ष्म लैंग्वेजएँ हैं। किसी प्रोग्राम की स्थापना के दौरान व्यावसायिक नियमों, ग्राफिकल यूजर इंटरफेस या स्क्रीन के अनुक्रम को परिभाषित करने के लिए उपभाषा का उपयोग किया जा सकता है। उपयोगकर्ता अपनी स्वयं की उपभाषा को परिभाषित कर सकते हैं, किसी भी उपस्थिता रिबोल शब्द का पुन: उपयोग कर सकते हैं और इसे उस उपभाषा में एक विशिष्ट अर्थ दे सकते हैं।[6]उपभाषा की व्याख्या एक विशिष्ट तरीके से रीबोल ब्लॉक (या पार्सिंग स्ट्रिंग्स) को संसाधित करने वाले functionों द्वारा की जाती है।


रेबोल की उपभाषा लगाने की क्षमता का एक उदाहरण शब्द के साथ देखा जा सकता है return. डेटा विनिमय उपभाषा में return मात्र एक शब्द है जिसका कोई विशेष अर्थ नहीं है। दो उपभाषा में, return एक वैश्विक वैरिएबल है जो एक मूल फ़ंक्शन (कंप्यूटर विज्ञान) को संदर्भित करता है जो फ़ंक्शन परिणाम मान को वापस भेजता है।[4] विज़ुअल इंटरफ़ेस उपभाषा (VID) में, return एक कीवर्ड (कंप्यूटर प्रोग्रामिंग) है जो लेआउट इंजन को कैरिज रिटर्न अनुकरण करने, रेंडरिंग पेन को अगली पंक्ति की शुरुआत तक ले जाने का कारण बनता है।[7]

ग्राफिकल क्षमताओं वाले एक रिबोल उपभाषा को कई उपभाषा को समझना और व्याख्या करना होगा। नीचे दी गई तालिका महत्व के क्रम में सबसे महत्वपूर्ण सूचीबद्ध करती है।

उपभाषा का नाम द्वारा व्याख्या की गई उद्देश्य
डेटा विनिमय उपभाषा loadfunction डेटा और मेटाडेटा का प्रतिनिधित्व करता है; रीबोल उपभाषा के लिए साझा मंच
उपभाषा डू dofunction प्रोग्रामिंग
पार्स उपभाषा parsefunction पैटर्न मिलान
फ़ंक्शन विशिष्टता उपभाषा makefunction फ़ंक्शन परिलैंग्वेज; कार्यात्मक प्रोग्रामिंग
वस्तु विशिष्टता उपभाषा makefunction वस्तु परिलैंग्वेज/विरासत; प्रोटोटाइप-आधारित प्रोग्रामिंग
विज़ुअल इंटरफ़ेस उपभाषा (VID)

या RebGUI

layoutfunction

या displayfunction

ग्राफिकल यूजर इंटरफ़ेस निर्दिष्ट करता है
उपभाषा बनाएं viewfunction ग्राफिकल तत्वों (रेखाएँ, बहुभुज, आदि) को परिभाषित करता है
स्क्रिप्ट विशिष्टता उपभाषा dofunction स्क्रिप्ट परिलैंग्वेज
सुरक्षा नीति उपभाषा securefunction सुरक्षा नीति निर्दिष्ट करता है


सिंटेक्स

रीबोल सिंटैक्स फ्री-फॉर्म है, जिसके लिए विशिष्ट स्थिति की आवश्यकता नहीं होती है। हालाँकि, इंडेंटेशन का उपयोग प्रायः पाठ की संरचना को मानव पाठकों तक बेहतर ढंग से पहुंचाने के लिए किया जाता है।

विभिन्न उपभाषा के वाक्यात्मक गुण भिन्न हो सकते हैं। सभी रेबोल उपभाषा के लिए सामान्य मंच डेटा विनिमय उपभाषा है; अन्य उपभाषा साधारणतया इससे ली गई हैं। सभी उपभाषा के लिए सामान्य मंच होने के अलावा, डेटा एक्सचेंज उपभाषा का उपयोग सीधे डेटा और मेटाडेटा का प्रतिनिधित्व करने, डेटा संरचनाओं को भरने, इंटरनेट पर डेटा भेजने और उन्हें डेटा स्टोरेज में सहेजने के लिए किया जाता है।

सी (प्रोग्रामिंग लैंग्वेज) जैसी प्रोग्रामिंग लैंग्वेज के विपरीत, डेटा एक्सचेंज उपभाषा में डिक्लेरेशन (कंप्यूटर विज्ञान), स्टेटमेंट्स (प्रोग्रामिंग), एक्सप्रेशन (प्रोग्रामिंग) या कीवर्ड सम्मिलित नहीं होते हैं। एक वैध डेटा एक्सचेंज डायलेक्ट टेक्स्ट स्ट्रीम एक ट्री डेटा संरचना है जिसमें ब्लॉक (रूट ब्लॉक अंतर्निहित है, सबब्लॉक ब्रैकेट द्वारा सीमांकित हैं), पैरेंस (ब्रैकेट द्वारा सीमांकित), स्ट्रिंग (कंप्यूटर विज्ञान) (मल्टी-लाइन स्ट्रिंग्स के लिए उपयुक्त उद्धरण चिह्न ग्लिफ़ या ब्रैकेट द्वारा सीमांकित; गैर-मुद्रण योग्य वर्णों के लिए कैरेट अंकन का उपयोग किया जाता है), यूनिफ़ॉर्म रिसोर्स लोकेटर, ई-मेल पते, फ़ाइलें, पथ या अन्य अदिश (कंप्यूटिंग) है। ALGOL ब्लॉक (प्रोग्रामिंग) के विपरीत, रीबोल ब्लॉक लिस्प (प्रोग्रामिंग लैंग्वेज) में उद्धृत एस-एक्सप्रेशन के समान समग्र मान हैं। यह तथ्य कि कोड रीबोल ब्लॉक के रूप में लिखा गया है, लैंग्वेज को समरूप बनाता है।[4]

ब्लॉक के साथ-साथ पैरेन में अन्य मिश्रित मान भी हो सकते हैं (एक ब्लॉक में सबब्लॉक, पैरेन, स्ट्रिंग्स, ...) या स्केलर मान जैसे शब्द, सेट-वर्ड (कोलन द्वारा प्रत्यय वाले शब्द), गेट-वर्ड (उपसर्ग द्वारा लगाए गए शब्द) हो सकते हैं। बृहदान्त्र), शाब्दिक शब्द (एपोस्ट्रोफ द्वारा उपसर्ग किए गए शब्द), संख्याएं, धन, वर्ण, आदि, रिक्त स्थान द्वारा अलग किए गए। शब्दों में विशेष वर्णों की अनुमति है, इसलिए a+b एक शब्द है जो a + b से भिन्न है, जो रिक्त स्थान से अलग किए गए तीन शब्दों का एक क्रम है।

टिप्पणियाँ अर्धविराम के बाद पंक्ति के अंत तक दिखाई दे सकती हैं। बहु-पंक्ति टिप्पणियाँ या टिप्पणियाँ जिन्हें लेक्सिकल पार्सर द्वारा अनदेखा नहीं किया जाता है, उन्हें बहु-पंक्ति स्ट्रिंग जैसे "सामान्य" डेटाटाइप का उपयोग करके लिखा जा सकता है।[4]

सीमेन्टिकी

डोमेन-विशिष्ट लैंग्वेज वाले ब्लॉक को विशिष्ट मूल्यांकनकर्ता functionों के लिए तर्क (कंप्यूटर विज्ञान) के रूप में प्रस्तुत किया जा सकता है।[6]

डू

सबसे अधिक उपयोग किया जाने वाला मूल्यांकनकर्ता copy function है। इसका उपयोग डिफ़ॉल्ट रूप से इंटरप्रेटर कंसोल में टेक्स्ट इनपुट की व्याख्या करने के लिए किया जाता है।


दो उपभाषा द्वारा व्याख्या की गई copy function, एक एक्सप्रेशन-उन्मुख प्रोग्रामिंग लैंग्वेज है|डेटा विनिमय उपभाषा की एक्सप्रेशन-उन्मुख उपलैंग्वेज है। लैंग्वेज की मुख्य सीमेन्टिकी इकाई एक्सप्रेशन (प्रोग्रामिंग) है। ALGOL से आने वाली अनिवार्य प्रोग्रामिंग लैंग्वेज के विपरीत, do उपभाषा में न तो कीवर्ड होते हैं, न ही स्टेटमेंट्स है।

शब्दों का उपयोग केस-असंवेदनशील चर के रूप में किया जाता है। सभी गतिशील रूप से टाइप की गई लैंग्वेज की तरह, वेरिएबल का कोई संबद्ध प्रकार नहीं होता है, प्रकार मानों से जुड़ा होता है। परिणाम, यानी किसी शब्द का मूल्यांकन तब लौटाया जाता है जब copy function द्वारा किसी शब्द का सामना किया जाता है। किसी शब्द के सेट-वर्ड फॉर्म का उपयोग असाइनमेंट के लिए किया जा सकता है। स्टेटमेंट न होने पर, साइड-इफेक्ट वाले functionों के साथ-साथ असाइनमेंट का उपयोग अनिवार्य प्रोग्रामिंग के लिए किया जा सकता है।[4]

रूट ब्लॉक के सबब्लॉक स्वयं का मूल्यांकन करते हैं। इस संपत्ति का उपयोग डेटा ब्लॉक को संभालने के लिए, प्रवाह functionों को नियंत्रित करने के लिए तर्क के रूप में ब्लॉक सबमिट करके संरचित प्रोग्रामिंग के लिए किया जाता है if, either, loop, आदि, और उपभाषा लगाने के लिए, जब एक ब्लॉक को एक विशिष्ट उपभाषा फ़ंक्शन में पास किया जाता है।[6]

ध्यान देने योग्य एक विशिष्ट समस्या यह है कि चरों को निर्दिष्ट समग्र मानों की प्रतिलिपि नहीं बनाई जाती है। प्रतिलिपि बनाने के लिए, मान को पास करना copy function होगा।[4]

do e> function साधारणतया एक पोलिश संकेतन का अनुसरण करता है, जहां एक फ़ंक्शन उन तर्कों को संसाधित करता है जो उसका अनुसरण करते हैं। हालाँकि, इन्फ़िक्स ऑपरेटर (प्रोग्रामिंग) का उपयोग करते हुए इन्फिक्स संकेतन भी उपस्थित है। इन्फिक्स मूल्यांकन को उपसर्ग मूल्यांकन पर प्राथमिकता दी जाती है। उदाहरण के लिए,

abs -2 + 3

1 लौटाता है, क्योंकि इन्फ़िक्स जोड़ को निरपेक्ष मान की गणना पर प्राथमिकता दी जाती है। इन्फिक्स एक्सप्रेशनयों का मूल्यांकन करते समय, मूल्यांकन का क्रम बाएं से दाएं होता है, कोई भी ऑपरेटर दूसरे के ऊपर संचालन का क्रम नहीं लेता है। उदाहरण के लिए,

2 + 3 * 4

रिटर्न 20, जबकि गुणन को प्राथमिकता देने वाले मूल्यांकन से 14 प्राप्त होगा। सभी ऑपरेटरों के पास उपसर्ग संस्करण होते हैं। Do साधारणतया तर्कों को किसी फ़ंक्शन में पास करने से पहले उनका मूल्यांकन करता है। तो, नीचे दी गई एक्सप्रेशन:

http://en.wikipedia.org/wiki/रीबोल पढ़ें प्रिंट करें

पहले विकिपीडिया रीबोल पृष्ठ को पढ़ता है और फिर परिणाम को print function में भेजता है। मूल्यांकन के क्रम को बदलने के लिए कोष्ठक का उपयोग किया जा सकता है। उपसर्ग संकेतन का उपयोग करके, अभिव्यक्तियों में कोष्ठक के उपयोग से बचा जा सकता है।[4]

सरल प्राथमिकता नियम दोनों एक लाभ हैं:

  • एक्सप्रेशन लिखते समय प्राथमिकता तालिकाओं से परामर्श लेने की आवश्यकता नहीं है
  • जब कोई नया ऑपरेटर परिभाषित किया जाता है तो प्राथमिकता तालिकाओं को फिर से लिखने की आवश्यकता नहीं होती है
  • भावों को इन्फ़िक्स से प्रीफ़िक्स नोटेशन में और इसके विपरीत आसानी से लिप्यंतरण किया जा सकता है

साथ ही एक नुकसान:

  • अधिक पारंपरिक प्राथमिकता नियमों के आदी उपयोगकर्ता आसानी से गलती कर सकते हैं[6]

पार्स (parse)

parse e> function का उपयोग अधिमानतः उपभाषा को निर्दिष्ट करने, सत्यापित करने, बदलने और व्याख्या करने के लिए किया जाता है। यह रन टाइम पर पार्स एक्सप्रेशन का मिलान करके ऐसा करता है।

पार्स फ़ंक्शन का उपयोग अधिमानतः उपभाषा को निर्दिष्ट करने, मान्य करने, रूपांतरित करने और व्याख्या करने के लिए किया जाता है। यह रन टाइम पर पार्स अभिव्यक्तियों का मिलान करके ऐसा करता है।[6]

पार्स एक्सप्रेशनयाँ पार्स उपभाषा में लिखी जाती हैं, जो दो उपभाषा की तरह, डेटा विनिमय उपभाषा की एक एक्सप्रेशन-उन्मुख उपलैंग्वेज है। डू उपभाषा के विपरीत, पार्स उपभाषा ऑपरेटरों और सबसे महत्वपूर्ण टर्मिनल प्रतीक का प्रतिनिधित्व करने वाले कीवर्ड का उपयोग करती है, इन्फिक्स पार्सिंग ऑपरेटरों के पास उपसर्ग समकक्ष नहीं होते हैं और प्राथमिकता नियमों का उपयोग करते हैं (अनुक्रम में पसंद की तुलना में अधिक प्राथमिकता होती है)।[6]

पार्सिंग प्रक्रिया के दौरान की जाने वाली कार्रवाइयों को भी सम्मिलित किया जा सकता है और parse function का उपयोग ब्लॉक या स्ट्रिंग्स को संसाधित करने के लिए किया जा सकता है। स्ट्रिंग पार्सिंग स्तर पर parse को वर्णों और सीमांककों को ध्यान में रखते हुए "निम्न स्तर" पार्सिंग को संभालना होगा। ब्लॉक पार्सिंग उच्च स्तर की है, रीबोल मानों के स्तर पर स्कैनिंग को संभालती है।[6]


पार्स उपभाषा ऊपर से नीचे पार्सिंग लैंग्वेज या पार्सिंग अभिव्यक्ति व्याकरण (पीईजी) द्वारा दर्शाए गए व्याकरणों के परिवार से संबंधित है। मुख्य समानता परिवार के सभी सदस्यों के पास अनुक्रम और विकल्प ऑपरेटरों की उपस्थिति है। पार्स उपभाषा वाक्य रचना और पार्स उपभाषा और पीईजी के बीच समानताएं एक पीईजी उदाहरण के इस लिप्यंतरण द्वारा चित्रित की गई हैं जो एक अंकगणितीय अभिव्यक्ति को पार्स करती है:

Digit: charset [#"0" - #"9"]
Value: [some Digit | "(" Expr ")"]
Product: [Value any [["*"| "/"] Value]]
Sum: [Product any [["+"| "-"] Product]]
Expr: Sum
parse/all "12+13" Expr


functionान्वयन

आधिकारिक रीबोल 2.7.8 functionान्वयन कई संस्करणों (/Core, /View, /Command, /SDK and /IOS) में उपलब्ध है। /कोर और /व्यू दोनों संस्करण स्वतंत्र रूप से पुनर्वितरण योग्य सॉफ़्टवेयर हैं।[1]

रनटाइम वातावरण को एकल निष्पादन योग्य फ़ाइल में संग्रहीत किया जाता है। रीबोल/Core 2.7.8, कंसोल संस्करण, लगभग 300 KB का है और रीबोल/व्यू 2.7.8, ग्राफिकल यूज़र इंटरफ़ेस संस्करण, लगभग 650 KB आकार का है।

रीबोल/व्यू क्रॉस-प्लेटफ़ॉर्म और ध्वनि पहुंच प्रदान करता है, और अपने स्वयं के विंडोिंग टूलकिट और शैलियों के एक्स्टेंसिबल सेट (जीयूआई विजेट) के साथ आता है। विस्तारित संस्करण, जैसे रीबोल/कमांड 2.7.8 या रीबोल/एसडीके 2.7.8 के लिए सशुल्क लाइसेंस की आवश्यकता होती है; वे ओडीबीसी डेटा एक्सेस और स्टैंडअलोन निष्पादन योग्य फ़ाइलें बनाने का विकल्प जैसी सुविधाएं जोड़ते हैं।

विरासत

  • रीबोल को डगलस क्रॉकफोर्ड द्वारा जावास्क्रिप्ट ऑब्जेक्ट नोटेशन की प्रेरणाओं में से एक के रूप में नामित किया गया था।[5]* रीबोल ने ओपन-सोर्स ओर्का प्रोजेक्ट को प्रेरित किया, जो एक व्याख्या की गई रीबोल जैसी लैंग्वेज है।[14]
  • बोरोन एक व्याख्या की गई, होमोइकोनिक लैंग्वेज है जो रीबोल से प्रेरित और उसके समान है, जो डोमेन विशिष्ट लैंग्वेज को एम्बेड करने के लिए है। इसे LGPLv3 की शर्तों के तहत लाइसेंस प्राप्त C लाइब्रेरी के रूप में functionान्वित किया गया है।
  • रेड (प्रोग्रामिंग लैंग्वेज) सीधे रीबोल से प्रेरित थी, फिर भी रेड के functionान्वयन विकल्प विशेष रूप से इसकी कथित सीमाओं पर काबू पाने के लिए तैयार किए गए थे।[15]


यह भी देखें

संदर्भ

  1. 1.0 1.1 REBOL Technologies. The REBOL/View and REBOL/Core 2.7.8 license
  2. R3 source at GitHub
  3. "Carl's REBOL Blog - Let's switch to .reb suffix". Rebol.com. August 18, 2013. Retrieved January 23, 2014.
  4. 4.0 4.1 4.2 4.3 4.4 4.5 4.6 Goldman, E., Blanton, J. (2000). REBOL: The Official Guide. McGraw-Hill Osborne Media. ISBN 0-07-212279-X.
  5. 5.0 5.1 5.2 Crockford, Douglas. The JSON Saga, jsonsaga.ppt Archived October 4, 2012, at the Wayback Machine
  6. 6.00 6.01 6.02 6.03 6.04 6.05 6.06 6.07 6.08 6.09 6.10 6.11 Roberts, Ralph (2000). REBOL for Dummies. Hungry Minds. ISBN 0-7645-0745-1.
  7. 7.0 7.1 Auverlot, Olivier (2001). Rebol Programmation. Eyrolles. ISBN 2-212-11017-0.
  8. 8.0 8.1 Sassenrath, Carl (July 1, 2000). "Inside the REBOL scripting language". Dr. Dobb's Journal.
  9. "खुला स्रोत बनने के लिए REBOL". Rebol.com. September 25, 2012. Retrieved January 23, 2014.
  10. Sassenrath, Carl (December 12, 2012). "Comments on: R3 Source Code Released!". Retrieved August 14, 2014. You probably thought the source release would never happen? Am I right? Well, it's there now in github at github.com/rebol/rebol.
  11. "Calling REBOL Rebol?". December 14, 2012. Archived from the original on December 3, 2013. Retrieved December 2, 2013.
  12. Sassenrath, Carl. "आपके पसंदीदा एंबेडेड बोर्ड के लिए क्रॉस-कंपाइलिंग रीबोल". Retrieved September 16, 2016.
  13. "रिबोल दुभाषिया के लिए स्रोत कोड". rebol/rebol GitHub. Retrieved March 14, 2017.
  14. The rebol-orca project at Freecode
  15. The Red project at GitHub


अग्रिम पठन


बाहरी संबंध