रीबोल: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(5 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Short description|Programming language designed by Carl Sassenrath}}
{{Short description|Programming language designed by Carl Sassenrath}}
{{Use mdy dates|date=December 2014}}
 
{{Infobox programming language
{{Infobox programming language
| name                  = Rebol
| name                  = रीबोल
| logo                  = [[File:Rebol logo.png]]
| logo                  = [[File:Rebol logo.png]]
| paradigm              = [[language oriented programming]], [[Data exchange language|data exchange]], [[functional programming|functional]], [[prototype-based programming|prototype-based]], [[imperative programming|imperative]] <!-- ordered by prominence-->
| paradigm              = [[language oriented programming]], [[Data exchange language|data exchange]], [[functional programming|functional]], [[prototype-based programming|prototype-based]], [[imperative programming|imperative]] <!-- ordered by prominence-->
Line 32: Line 32:




मूल रूप से, लैंग्वेज और इसका आधिकारिक 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>{{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) को लिस्प से बदलने के कारण, प्रोग्रामर्स ने सभी बड़े अक्षरों में रीबोल (रीबोल) लिखने की प्रथा क्लोज्ड कर दी। सैसेनराथ ने अंततः अपने ब्लॉग पर सामुदायिक बहस में नामकरण का प्रश्न रखा।<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>
Line 45: Line 43:


# रीबोल टेक्नोलॉजीज की स्थापना 1998 में हुई थी।
# रीबोल टेक्नोलॉजीज की स्थापना 1998 में हुई थी।
# रीबोल 2, उपभाषा, जो विस्तारित उपभाषा संस्करणों का मूल बन गया, पहली बार 1999 में जारी किया गया था।
# रीबोल 2, सबलैंग्वेज, जो विस्तारित सबलैंग्वेज संस्करणों का मूल बन गया, पहली बार 1999 में जारी किया गया था।
## रीबोल/कमांड (''REBOL/Command''), जिसने मजबूत एन्क्रिप्शन और डेटाबेस कनेक्टिविटी खोलें एक्सेस जोड़ा, सितंबर 2000 में जारी किया गया था
## रीबोल/कमांड (''REBOL/Command''), जिसने मजबूत एन्क्रिप्शन और डेटाबेस कनेक्टिविटी खोलें एक्सेस जोड़ा, सितंबर 2000 में जारी किया गया था
## रीबोल/व्यू (''REBOL/View'') को अप्रैल 2001 में रिलीज़ किया गया था, जिसमें मुख्य लैंग्वेज पर ग्राफ़िकल क्षमताएँ जोड़ी गई थीं।
## रीबोल/व्यू (''REBOL/View'') को अप्रैल 2001 में रिलीज़ किया गया था, जिसमें मुख्य लैंग्वेज पर ग्राफ़िकल क्षमताएँ जोड़ी गई थीं।
## रीबोल/आईओएस (''REBOL/IOS''), रीबोल के साथ निर्मित एक विस्तार योग्य सहयोग वातावरण अगस्त 2001 में जारी किया गया था।
## रीबोल/आईओएस (''REBOL/IOS''), रीबोल के साथ निर्मित एक विस्तार योग्य सहयोग वातावरण अगस्त 2001 में जारी किया गया था।
## रीबोल/एस डी के (''REBOL/SDK''), बाइंडिंग के लिए कर्नेल का विकल्प और साथ ही एक प्रीप्रोसेसर प्रदान करता है, जिसे दिसंबर 2002 में जारी किया गया था।
## रीबोल/एस डी के (''REBOL/SDK''), बाइंडिंग के लिए कर्नेल का विकल्प और साथ ही एक प्रीप्रोसेसर प्रदान करता है, जिसे दिसंबर 2002 में जारी किया गया था।
# {{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>
# रीबोल 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>
 
 
==डिज़ाइन==
==डिज़ाइन==


===उपयोग में आसानी===
===उपयोग में सरलता===
रीबोल डिज़ाइन सिद्धांतों में से एक सरल चीज़ों को सरल तरीकों से करना है।<ref name="RD" />निम्नलिखित उदाहरण में विज़ुअल इंटरफ़ेस उपभाषा का उपयोग ग्राफिकल यूजर इंटरफ़ेस के साथ एक सरल हेलो वर्ल्ड (Hello World) functionक्रम का वर्णन करने के लिए किया जाता है:
रीबोल डिज़ाइन सिद्धांतों में से एक सरल चीज़ों को सरल तरीकों से करना है।<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 65: Line 61:
[[File:R3-GUIHelloWorld.png|R3-GUI हेलो वर्ल्ड उदाहरण]]
[[File:R3-GUIHelloWorld.png|R3-GUI हेलो वर्ल्ड उदाहरण]]


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


रेबोल की सबलैंग्वेज लगाने की क्षमता का एक उदाहरण शब्द के साथ देखा जा सकता है <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"
|-
|-
! उपभाषा का नाम
! सबलैंग्वेज का नाम
! द्वारा व्याख्या की गई
! द्वारा व्याख्या की गई
! उद्देश्य
! उद्देश्य
|-
|-
| डेटा विनिमय उपभाषा
| डेटा विनिमय सबलैंग्वेज
| <code>load</code>function
| <code>load</code>function
| डेटा और मेटाडेटा का प्रतिनिधित्व करता है; रीबोल उपभाषा के लिए साझा मंच
| डेटा और मेटाडेटा का प्रतिनिधित्व करता है; रीबोल सबलैंग्वेज के लिए साझा मंच
|-
|-
| उपभाषा डू
| सबलैंग्वेज डू
| <code>do</code>function
| <code>do</code>function
| प्रोग्रामिंग
| प्रोग्रामिंग
|-
|-
| पार्स उपभाषा
| पार्स सबलैंग्वेज
| <code>parse</code>function
| <code>parse</code>function
| पैटर्न मिलान
| पैटर्न मिलान
|-
|-
| फ़ंक्शन विशिष्टता उपभाषा
| फ़ंक्शन विशिष्टता सबलैंग्वेज
| <code>make</code>function
| <code>make</code>function
| फ़ंक्शन परिलैंग्वेज; कार्यात्मक प्रोग्रामिंग
| फ़ंक्शन परिलैंग्वेज; कार्यात्मक प्रोग्रामिंग
|-
|-
| वस्तु विशिष्टता उपभाषा
| वस्तु विशिष्टता सबलैंग्वेज
| <code>make</code>function
| <code>make</code>function
| वस्तु परिलैंग्वेज/विरासत; प्रोटोटाइप-आधारित प्रोग्रामिंग
| वस्तु परिलैंग्वेज/विरासत; प्रोटोटाइप-आधारित प्रोग्रामिंग
|-
|-
| विज़ुअल इंटरफ़ेस उपभाषा (VID)
| विज़ुअल इंटरफ़ेस सबलैंग्वेज (VID)
या
या
RebGUI
RebGUI
Line 106: Line 101:
| ग्राफिकल यूजर इंटरफ़ेस निर्दिष्ट करता है
| ग्राफिकल यूजर इंटरफ़ेस निर्दिष्ट करता है
|-
|-
| उपभाषा बनाएं
| सबलैंग्वेज बनाएं
| <code>view</code>function
| <code>view</code>function
| ग्राफिकल तत्वों (रेखाएँ, बहुभुज, आदि) को परिभाषित करता है
| ग्राफिकल तत्वों (रेखाएँ, बहुभुज, आदि) को परिभाषित करता है
|-
|-
| स्क्रिप्ट विशिष्टता उपभाषा
| स्क्रिप्ट विशिष्टता सबलैंग्वेज
| <code>do</code>function
| <code>do</code>function
| स्क्रिप्ट परिलैंग्वेज
| स्क्रिप्ट परिलैंग्वेज
|-
|-
| सुरक्षा नीति उपभाषा
| सुरक्षा नीति सबलैंग्वेज
| <code>secure</code>function
| <code>secure</code>function
| सुरक्षा नीति निर्दिष्ट करता है
| सुरक्षा नीति निर्दिष्ट करता है
|}
|}
===सिंटेक्स===
===सिंटेक्स===
रीबोल सिंटैक्स फ्री-फॉर्म है, जिसके लिए विशिष्ट स्थिति की आवश्यकता नहीं होती है। हालाँकि, इंडेंटेशन का उपयोग प्रायः पाठ की संरचना को मानव पाठकों तक बेहतर ढंग से पहुंचाने के लिए किया जाता है।
रीबोल सिंटैक्स फ्री-फॉर्म है, जिसके लिए विशिष्ट स्थिति की आवश्यकता नहीं होती है। हालाँकि, इंडेंटेशन का उपयोग प्रायः पाठ की संरचना को मानव पाठकों तक बेहतर ढंग से पहुंचाने के लिए किया जाता है।


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


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


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


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


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


शब्दों का उपयोग केस-असंवेदनशील चर के रूप में किया जाता है। सभी गतिशील रूप से टाइप की गई लैंग्वेज की तरह, वेरिएबल का कोई संबद्ध प्रकार नहीं होता है, प्रकार मानों से जुड़ा होता है। परिणाम, यानी किसी शब्द का मूल्यांकन तब लौटाया जाता है जब <code>copy</code> function द्वारा किसी शब्द का सामना किया जाता है। किसी शब्द के सेट-वर्ड फॉर्म का उपयोग असाइनमेंट के लिए किया जा सकता है। स्टेटमेंट न होने पर, साइड-इफेक्ट वाले functionों के साथ-साथ असाइनमेंट का उपयोग अनिवार्य प्रोग्रामिंग के लिए किया जा सकता है।<ref name="OG" />
रूट ब्लॉक के सबब्लॉक स्वयं का मूल्यांकन करते हैं। इस संपत्ति का उपयोग डेटा ब्लॉक को संभालने के लिए, प्रवाह functionों को नियंत्रित करने के लिए तर्क के रूप में ब्लॉक सबमिट करके [[संरचित प्रोग्रामिंग]] के लिए किया जाता है <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> function होगा।<ref name="OG" />
ध्यान देने योग्य एक विशिष्ट समस्या यह है कि चरों को निर्दिष्ट समग्र मानों की प्रतिलिपि नहीं बनाई जाती है। प्रतिलिपि बनाने के लिए, मान को पास करना  <code>copy</code> function होगा।<ref name="OG" />
Line 148: Line 140:
<code>do</code> e> function साधारणतया एक [[पोलिश संकेतन]] का अनुसरण करता है, जहां एक फ़ंक्शन उन तर्कों को संसाधित करता है जो उसका अनुसरण करते हैं। हालाँकि, इन्फ़िक्स ऑपरेटर (प्रोग्रामिंग) का उपयोग करते हुए [[इन्फिक्स संकेतन]] भी उपस्थित है। इन्फिक्स मूल्यांकन को उपसर्ग मूल्यांकन पर प्राथमिकता दी जाती है। उदाहरण के लिए,
<code>do</code> e> function साधारणतया एक [[पोलिश संकेतन]] का अनुसरण करता है, जहां एक फ़ंक्शन उन तर्कों को संसाधित करता है जो उसका अनुसरण करते हैं। हालाँकि, इन्फ़िक्स ऑपरेटर (प्रोग्रामिंग) का उपयोग करते हुए [[इन्फिक्स संकेतन]] भी उपस्थित है। इन्फिक्स मूल्यांकन को उपसर्ग मूल्यांकन पर प्राथमिकता दी जाती है। उदाहरण के लिए,
  abs -2 + 3
  abs -2 + 3
1 लौटाता है, क्योंकि इन्फ़िक्स जोड़ को निरपेक्ष मान की गणना पर प्राथमिकता दी जाती है। इन्फिक्स एक्सप्रेशनयों का मूल्यांकन करते समय, मूल्यांकन का क्रम बाएं से दाएं होता है, कोई भी ऑपरेटर दूसरे के ऊपर संचालन का क्रम नहीं लेता है। उदाहरण के लिए,
1 पुनः वापस आता है, क्योंकि इन्फ़िक्स जोड़ को निरपेक्ष मान की गणना पर प्राथमिकता दी जाती है। इन्फिक्स एक्सप्रेशनयों का मूल्यांकन करते समय, मूल्यांकन का क्रम बाएं से दाएं होता है, कोई भी ऑपरेटर दूसरे के ऊपर संचालन का क्रम नहीं लेता है। उदाहरण के लिए,
<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
2 + 3 * 4
2 + 3 * 4
Line 161: Line 153:
* एक्सप्रेशन लिखते समय प्राथमिकता तालिकाओं से परामर्श लेने की आवश्यकता नहीं है
* एक्सप्रेशन लिखते समय प्राथमिकता तालिकाओं से परामर्श लेने की आवश्यकता नहीं है
* जब कोई नया ऑपरेटर परिभाषित किया जाता है तो प्राथमिकता तालिकाओं को फिर से लिखने की आवश्यकता नहीं होती है
* जब कोई नया ऑपरेटर परिभाषित किया जाता है तो प्राथमिकता तालिकाओं को फिर से लिखने की आवश्यकता नहीं होती है
* भावों को इन्फ़िक्स से प्रीफ़िक्स नोटेशन में और इसके विपरीत आसानी से [[लिप्यंतरण]] किया जा सकता है
* भावों को इन्फ़िक्स से प्रीफ़िक्स नोटेशन में और इसके विपरीत सरलता से [[लिप्यंतरण]] किया जा सकता है
साथ ही एक नुकसान:
साथ ही एक नुकसान:
* अधिक पारंपरिक प्राथमिकता नियमों के आदी उपयोगकर्ता आसानी से गलती कर सकते हैं<ref name="RD" />
* अधिक पारंपरिक प्राथमिकता नियमों के आदी उपयोगकर्ता सरलता से गलती कर सकते हैं<ref name="RD" />


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


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


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


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


 
पार्स सबलैंग्वेज ऊपर से नीचे पार्सिंग लैंग्वेज या पार्सिंग अभिव्यक्ति व्याकरण (पीईजी) द्वारा दर्शाए गए व्याकरणों के परिवार से संबंधित है। मुख्य समानता परिवार के सभी सदस्यों के पास अनुक्रम और विकल्प ऑपरेटरों की उपस्थिति है। पार्स सबलैंग्वेज वाक्य रचना और पार्स सबलैंग्वेज और पीईजी के बीच समानताएं एक पीईजी उदाहरण के इस लिप्यंतरण द्वारा चित्रित की गई हैं जो एक अंकगणितीय अभिव्यक्ति को पार्स करती है:
पार्स उपभाषा ऊपर से नीचे पार्सिंग लैंग्वेज या पार्सिंग अभिव्यक्ति व्याकरण (पीईजी) द्वारा दर्शाए गए व्याकरणों के परिवार से संबंधित है। मुख्य समानता परिवार के सभी सदस्यों के पास अनुक्रम और विकल्प ऑपरेटरों की उपस्थिति है। पार्स उपभाषा वाक्य रचना और पार्स उपभाषा और पीईजी के बीच समानताएं एक पीईजी उदाहरण के इस लिप्यंतरण द्वारा चित्रित की गई हैं जो एक अंकगणितीय अभिव्यक्ति को पार्स करती है:
<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
Digit: charset [#"0" - #"9"]
Digit: charset [#"0" - #"9"]
Line 183: Line 174:
Expr: Sum
Expr: Sum
parse/all "12+13" Expr</syntaxhighlight>
parse/all "12+13" Expr</syntaxhighlight>
 
==[[कार्यान्वयन]]==
 
==[[कार्यान्वयन|functionान्वयन]]==
आधिकारिक रीबोल 2.7.8 functionान्वयन कई संस्करणों (''/Core'', ''/View'', ''/Command'', ''/SDK'' and ''/IOS'') में उपलब्ध है। /कोर और /व्यू दोनों संस्करण स्वतंत्र रूप से पुनर्वितरण योग्य सॉफ़्टवेयर हैं।<ref name="lic" />
आधिकारिक रीबोल 2.7.8 functionान्वयन कई संस्करणों (''/Core'', ''/View'', ''/Command'', ''/SDK'' and ''/IOS'') में उपलब्ध है। /कोर और /व्यू दोनों संस्करण स्वतंत्र रूप से पुनर्वितरण योग्य सॉफ़्टवेयर हैं।<ref name="lic" />


Line 192: Line 181:
रीबोल/व्यू क्रॉस-प्लेटफ़ॉर्म और ध्वनि पहुंच प्रदान करता है, और अपने स्वयं के विंडोिंग टूलकिट और शैलियों के एक्स्टेंसिबल सेट ([[जीयूआई विजेट]]) के साथ आता है। विस्तारित संस्करण, जैसे रीबोल/कमांड 2.7.8 या रीबोल/एसडीके 2.7.8 के लिए सशुल्क लाइसेंस की आवश्यकता होती है; वे ओडीबीसी डेटा एक्सेस और स्टैंडअलोन निष्पादन योग्य फ़ाइलें बनाने का विकल्प जैसी सुविधाएं जोड़ते हैं।
रीबोल/व्यू क्रॉस-प्लेटफ़ॉर्म और ध्वनि पहुंच प्रदान करता है, और अपने स्वयं के विंडोिंग टूलकिट और शैलियों के एक्स्टेंसिबल सेट ([[जीयूआई विजेट]]) के साथ आता है। विस्तारित संस्करण, जैसे रीबोल/कमांड 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 लाइब्रेरी के रूप में functionान्वित किया गया है।
* [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>
* रेड (प्रोग्रामिंग लैंग्वेज) सीधे रीबोल से प्रेरित थी, फिर भी रेड के [[कार्यान्वयन]] विकल्प विशेष रूप से इसकी कथित सीमाओं पर काबू पाने के लिए तैयार किए गए थे।<ref>The [https://github.com/red/red/blob/master/README.md#red-programming-language Red project] at [[GitHub]]</ref>
 
 
==यह भी देखें==
==यह भी देखें==
* डोमेन-विशिष्ट लैंग्वेज
* डोमेन-विशिष्ट लैंग्वेज
Line 204: Line 191:
==संदर्भ==
==संदर्भ==
{{Reflist}}
{{Reflist}}
==अग्रिम पठन==
==अग्रिम पठन==
* {{cite news|last=Mikes|first=Nora|title=A REBOL incursion: It's not a scripting language, not a programming language -- and not a new Amiga, either. Or is it?|url=http://www.linuxworld.com/linuxworld/lw-1999-10/lw-10-rebol.html|newspaper=LinuxWorld|date=November 20, 1999|archive-url=https://web.archive.org/web/20050324001942/http://linuxworld.com/linuxworld/lw-1999-10/lw-10-rebol.html|archive-date=March 24, 2005|url-status=dead|df=mdy-all}}
* {{cite news|last=Mikes|first=Nora|title=A REBOL incursion: It's not a scripting language, not a programming language -- and not a new Amiga, either. Or is it?|url=http://www.linuxworld.com/linuxworld/lw-1999-10/lw-10-rebol.html|newspaper=LinuxWorld|date=November 20, 1999|archive-url=https://web.archive.org/web/20050324001942/http://linuxworld.com/linuxworld/lw-1999-10/lw-10-rebol.html|archive-date=March 24, 2005|url-status=dead|df=mdy-all}}
* {{cite news|last=Story|first=Derrick|title=Rebol Might Be the Language for the Rest of Us|url=http://webreview.com/pub/1999/08/27/feature/index.html|newspaper=[[Web Review]]|date=Aug 27, 1999|archive-url=https://web.archive.org/web/19991012182529/http://webreview.com/pub/1999/08/27/feature/index.html |archive-date=October 12, 1999}}
* {{cite news|last=Story|first=Derrick|title=Rebol Might Be the Language for the Rest of Us|url=http://webreview.com/pub/1999/08/27/feature/index.html|newspaper=[[Web Review]]|date=Aug 27, 1999|archive-url=https://web.archive.org/web/19991012182529/http://webreview.com/pub/1999/08/27/feature/index.html |archive-date=October 12, 1999}}
== बाहरी संबंध ==
== बाहरी संबंध ==
* {{curlie|Computers/Programming/Languages/REBOL|REBOL}}
* {{curlie|Computers/Programming/Languages/REBOL|REBOL}}
Line 217: Line 200:
* [https://github.com/Oldes/Rebol3 रीबोल 3 (Oldes' fork) sources]
* [https://github.com/Oldes/Rebol3 रीबोल 3 (Oldes' fork) sources]


{{Data Exchange}}
{{DEFAULTSORT:Rebol}}
 
{{Authority control}}
 
{{DEFAULTSORT:Rebol}}[[Category: प्रोग्रामिंग भाषा]] [[Category: AmigaOS 4 सॉफ्टवेयर]] [[Category: गतिशील प्रोग्रामिंग भाषाएँ]] [[Category: गतिशील रूप से टाइप की गई प्रोग्रामिंग भाषाएँ]] [[Category: कार्यात्मक भाषाएँ]] [[Category: प्रोटोटाइप-आधारित प्रोग्रामिंग भाषाएँ]] [[Category: स्क्रिप्टिंग भाषाएँ]] [[Category: एक्स्टेंसिबल सिंटैक्स प्रोग्रामिंग भाषाएँ]] [[Category: पूर्व मालिकाना सॉफ्टवेयर]] [[Category: प्रोग्रामिंग भाषाएँ 1997 में बनाई गईं]] [[Category: उच्च स्तरीय प्रोग्रामिंग भाषाएँ]] [[Category: होमोइकोनिक प्रोग्रामिंग भाषाएँ]]
 
 


[[Category: Machine Translated Page]]
[[Category:AmigaOS 4 सॉफ्टवेयर|Rebol]]
[[Category:Created On 24/07/2023]]
[[Category:Articles with Curlie links|Rebol]]
[[Category:Created On 24/07/2023|Rebol]]
[[Category:Lua-based templates|Rebol]]
[[Category:Machine Translated Page|Rebol]]
[[Category:Pages with script errors|Rebol]]
[[Category:Short description with empty Wikidata description|Rebol]]
[[Category:Templates Vigyan Ready|Rebol]]
[[Category:Templates that add a tracking category|Rebol]]
[[Category:Templates that generate short descriptions|Rebol]]
[[Category:Templates using TemplateData|Rebol]]
[[Category:Webarchive template wayback links]]
[[Category:उच्च स्तरीय प्रोग्रामिंग भाषाएँ|Rebol]]
[[Category:एक्स्टेंसिबल सिंटैक्स प्रोग्रामिंग भाषाएँ|Rebol]]
[[Category:कार्यात्मक भाषाएँ|Rebol]]
[[Category:गतिशील प्रोग्रामिंग भाषाएँ|Rebol]]
[[Category:गतिशील रूप से टाइप की गई प्रोग्रामिंग भाषाएँ|Rebol]]
[[Category:पूर्व मालिकाना सॉफ्टवेयर|Rebol]]
[[Category:प्रोग्रामिंग भाषा|Rebol]]
[[Category:प्रोग्रामिंग भाषाएँ 1997 में बनाई गईं|Rebol]]
[[Category:प्रोटोटाइप-आधारित प्रोग्रामिंग भाषाएँ|Rebol]]
[[Category:स्क्रिप्टिंग भाषाएँ|Rebol]]
[[Category:होमोइकोनिक प्रोग्रामिंग भाषाएँ|Rebol]]

Latest revision as of 16:57, 21 August 2023

रीबोल
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]


मूल रूप से, लैंग्वेज और इसका आधिकारिक कार्यान्वयन स्वामित्व सॉफ्टवेयर और क्लोज्ड सोर्स था, जिसे रीबोल टेक्नोलॉजी द्वारा विकसित किया गया था। लॉरेंस रोसेन के साथ चर्चा के बाद,[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]सबलैंग्वेज की व्याख्या एक विशिष्ट तरीके से रीबोल ब्लॉक (या पार्सिंग स्ट्रिंग्स) को संसाधित करने वाले फंक्शन द्वारा की जाती है।

रेबोल की सबलैंग्वेज लगाने की क्षमता का एक उदाहरण शब्द के साथ देखा जा सकता है 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 द्वारा किसी शब्द का सामना किया जाता है। किसी शब्द के सेट-वर्ड फॉर्म का उपयोग असाइनमेंट के लिए किया जा सकता है। स्टेटमेंट न होने पर, साइड-इफेक्ट वाले फंक्शन के साथ-साथ असाइनमेंट का उपयोग अनिवार्य प्रोग्रामिंग के लिए किया जा सकता है।[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

कार्यान्वयन

आधिकारिक रीबोल 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 लाइब्रेरी के रूप में कार्यान्वित किया गया है।
  • रेड (प्रोग्रामिंग लैंग्वेज) सीधे रीबोल से प्रेरित थी, फिर भी रेड के कार्यान्वयन विकल्प विशेष रूप से इसकी कथित सीमाओं पर काबू पाने के लिए तैयार किए गए थे।[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 (2000-07-01). "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 16 September 2016.
  13. "रिबोल दुभाषिया के लिए स्रोत कोड". rebol/rebol GitHub. Retrieved 14 March 2017.
  14. The rebol-orca project at Freecode
  15. The Red project at GitHub

अग्रिम पठन

बाहरी संबंध