रेक्स: Difference between revisions
No edit summary |
No edit summary |
||
| Line 23: | Line 23: | ||
| wikibooks = Rexx Programming | | wikibooks = Rexx Programming | ||
}} | }} | ||
रेक्स (पुनर्गठित विस्तारित निष्पादक) एक प्रोग्रामिंग भाषा है जिसे व्याख्या (कंप्यूटिंग) या [[संकलक|संकलित]] किया जा सकता है। यह [[आईबीएम]] में [[माइक काउलिशॉ]] द्वारा विकसित किया गया था।<ref name=RexHist/><ref name=RexMay95/> यह एक संरचित, [[उच्च स्तरीय प्रोग्रामिंग भाषा]] है जिसे सीखने और पढ़ने में आसानी के लिए डिज़ाइन किया गया है। कंप्यूटिंग प्लेटफॉर्म की एक विस्तृत श्रृंखला के लिए मालिकाना और [[खुला स्रोत सॉफ्टवेयर]] रेक्स दुभाषिया (कंप्यूटिंग) उपस्थित है; आईबीएम [[मेनफ़्रेम कंप्यूटर]] के लिए संकलनकर्ता उपस्थित हैं।<ref>{{cite web | |||
|url=http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/FINDBOOK?filter=rexx | |url=http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/FINDBOOK?filter=rexx | ||
|title=सभी दस्तावेज़ों की सूची (फ़िल्टर=rexx)|publisher=[[IBM]] library server |year=2005 |access-date=2014-02-10}}</ref> | |title=सभी दस्तावेज़ों की सूची (फ़िल्टर=rexx)|publisher=[[IBM]] library server |year=2005 |access-date=2014-02-10}}</ref> | ||
रेक्स एक पूर्ण भाषा है जिसका उपयोग स्क्रिप्टिंग भाषा, [[मैक्रो (कंप्यूटर विज्ञान)]] भाषा और अनुप्रयोग विकास भाषा के रूप में किया जा सकता है। इसका उपयोग अक्सर डेटा और पाठ को संसाधित करने और रिपोर्ट तैयार करने के लिए किया जाता है; [[पर्ल]] के साथ इन समानताओं का अर्थ है कि रेक्स [[कॉमन गेटवे इंटरफ़ेस]] (सीजीआई) प्रोग्रामिंग में अच्छा काम करता है और यह वास्तविक में इस उद्देश्य के लिए उपयोग किया जाता है। कुछ ऑपरेटिंग सिस्टम में रेक्स प्राथमिक स्क्रिप्टिंग भाषा है, उदा। OS/2, [[MVS]], VM (ऑपरेटिंग सिस्टम), [[AmigaOS]], और SPF/PC, XEDIT, THE और ZOC (सॉफ़्टवेयर) टर्मिनल एमुलेटर जैसे कुछ अन्य सॉफ़्टवेयर में आंतरिक मैक्रो भाषा के रूप में भी उपयोग किया जाता है। इसके अतिरिक्त, रेक्स भाषा का उपयोग किसी भी प्रोग्राम में स्क्रिप्टिंग और मैक्रोज़ के लिए किया जा सकता है जो विंडोज स्क्रिप्टिंग होस्ट ActiveX [[भाषा का अंकन]] भाषाओं (जैसे VBScript और JScript) का उपयोग करता है यदि रेक्स इंजनों में से एक स्थापित है। | |||
रेक्स को VM/SP रिलीज 3 ऑन अप, TSO/E संस्करण 2 ऑन अप, OS/2 (1.3 और बाद में, जहां इसे आधिकारिक रूप से प्रोसीजर्स भाषा/2 नाम दिया गया है), AmigaOS संस्करण 2 ऑन अप, [[PC DOS]] (7.0 या [[PC DOS 2000|2000]]) [[ArcaOS]] और विंडोज NT 4.0 (संसाधन किट: रेजिना) के साथ आपूर्ति की जाती है।<ref>{{cite web | |||
|url=https://www.arcanoae.com/faqwd/does-arcaos-include-rexx-support | |url=https://www.arcanoae.com/faqwd/does-arcaos-include-rexx-support | ||
|title=क्या ArcaOS में REXX सपोर्ट शामिल है?|access-date=2020-09-03}}</ref> | |title=क्या ArcaOS में REXX सपोर्ट शामिल है?|access-date=2020-09-03}}</ref> CMS के लिए रेक्स स्क्रिप्ट फ़ाइल प्रकार EXEC को EXEC और EXEC2 के साथ साझा करती है, और स्क्रिप्ट की पहली पंक्ति उपयोग किए जाने वाले दुभाषिया को निर्दिष्ट करती है। MVS के लिए रेक्स स्क्रिप्ट्स हो सकती हैं{{efn|The TSO EXEC command with an unqualified dataset name and neither the CLIST nor EXEC option examines the low level qualifier or EXEC.}} निम्न स्तर के क्वालीफायर EXEC द्वारा पहचाना जा सकता है या हो सकता है{{efn|If the first line of a script fetched from SYSPROC is a comment containing REXX then it is treated as REXX rather than CLIST. A script fetched from SYSEXEC must be REXX.}} संदर्भ और पहली पंक्ति से पहचाना जाना चाहिए। OS/2 के लिए रेक्स स्क्रिप्ट फ़ाइल नाम एक्सटेंशन .cmd को अन्य स्क्रिप्टिंग भाषाओं के साथ साझा करती है, और स्क्रिप्ट की पहली पंक्ति उपयोग किए जाने वाले दुभाषिया को निर्दिष्ट करती है। रेक्स-जागरूक अनुप्रयोगों के लिए रेक्स मैक्रोज़ एप्लिकेशन द्वारा निर्धारित एक्सटेंशन का उपयोग करते हैं। 1980 के दशक के उत्तरार्ध में, रेक्स [[आईबीएम सिस्टम एप्लीकेशन आर्किटेक्चर]] के लिए सामान्य स्क्रिप्टिंग भाषा बन गई, जहाँ इसका नाम परिवर्तितकर SAA प्रोसीजर भाषा रेक्स कर दिया गया है। | ||
एक रेक्स स्क्रिप्ट या कमांड को कभी-कभी EXEC, [[ईएक्सईसी 2|EXEC 2]]<ref name="X2">{{cite book |title=EXEC 2 संदर्भ| id=SC24-5219-1 |pages=92| edition=Second | date=April 1982 | publisher=International Business Machines Corporation |url=http://bitsavers.org/pdf/ibm/370/VM_SP/Release_2_Jun82/SC24-5219-1_VM_SP_EXEC_2_Rel_2_Reference_Apr82.pdf}}</ref> और CP/CMS पर रेक्स स्क्रिप्ट और z/VM के माध्यम से VM/370 के लिए उपयोग किए जाने वाले CMS फ़ाइल प्रकार के लिए एक नोड के रूप में संदर्भित किया जाता है।<ref name="x">{{cite book|title=IBM वर्चुअल मशीन सुविधा /370: EXEC उपयोगकर्ता गाइड|id=GC20-1812-1|edition=Second|date=April 1975|publisher=International Business Machines Corporation |url=http://bitsavers.org/pdf/ibm/370/VM_370/Release_2/GC20-1812-1_VM370_EXEC_Users_Guide_Rel_2_Apr75.pdf}}</ref> | |||
== सुविधाएँ == | == सुविधाएँ == | ||
रेक्स में निम्नलिखित विशेषताएं और विशेषताएं हैं: | |||
* सरल वाक्य रचना | * सरल वाक्य रचना | ||
| Line 66: | Line 66: | ||
* विशिष्ट कार्यान्वयनों को छोड़कर बाहरी पुस्तकालयों से कार्यों और सबरूटीन्स को शामिल करने का कोई सामान्य तरीका प्रदान नहीं करता है | * विशिष्ट कार्यान्वयनों को छोड़कर बाहरी पुस्तकालयों से कार्यों और सबरूटीन्स को शामिल करने का कोई सामान्य तरीका प्रदान नहीं करता है | ||
रेक्स में सिर्फ तेईस हैं, मोटे तौर पर स्व-स्पष्ट, निर्देश (जैसे <code>call</code>, <code>parse</code>, तथा <code>select</code>) न्यूनतम विराम चिह्न और स्वरूपण आवश्यकताओं के साथ। यह अनिवार्य रूप से केवल एक डेटा-प्रकार, वर्ण स्ट्रिंग के साथ एक लगभग मुक्त रूप वाली भाषा है; इस दर्शन का अर्थ है कि सभी डेटा दृश्यमान (प्रतीकात्मक) हैं और डिबगिंग और ट्रेसिंग सरल हैं। | |||
रेक्स का सिंटैक्स PL/I के समान दिखता है, लेकिन इसमें कम संकेत हैं; इससे (कार्यक्रम द्वारा) पार्स करना कठिन हो जाता है, लेकिन उन मामलों को छोड़कर उपयोग करना आसान हो जाता है, जहां पीएल/आई की आदतें आश्चर्य का कारण बन सकती हैं। रेक्स डिजाइन लक्ष्यों में से एक [[कम से कम विस्मय का सिद्धांत]] था।<ref name="POLA">{{cite journal | |||
|url=https://www.cs.tufts.edu/~nr/cs257/archive/mike-cowlishaw/rexx.pdf|title=REXX भाषा का डिज़ाइन|author=M. F. Cowlishaw|journal=IBM Systems Journal |page=333|type=PDF|publisher=[[IBM Research]]|year=1984 | |url=https://www.cs.tufts.edu/~nr/cs257/archive/mike-cowlishaw/rexx.pdf|title=REXX भाषा का डिज़ाइन|author=M. F. Cowlishaw|journal=IBM Systems Journal |page=333|type=PDF|publisher=[[IBM Research]]|year=1984 | ||
|volume=23|issue=4|quote=क्या नई विशेषता से जुड़ा कोई उच्च आश्चर्यजनक कारक हो सकता है? यदि कोई सुविधा उपयोगकर्ता द्वारा गलती से गलत तरीके से लागू की जाती है और उसके कारण अप्रत्याशित परिणाम दिखाई देता है, तो उस सुविधा में एक उच्च विस्मयकारी कारक होता है और इसलिए अवांछनीय है। यदि एक आवश्यक विशेषता में एक उच्च विस्मयकारी कारक है, तो सुविधा को फिर से डिज़ाइन करना आवश्यक हो सकता है।|doi=10.1147/sj.234.0326|author-link=Mike Cowlishaw|access-date=2014-01-23}}</ref> | |volume=23|issue=4|quote=क्या नई विशेषता से जुड़ा कोई उच्च आश्चर्यजनक कारक हो सकता है? यदि कोई सुविधा उपयोगकर्ता द्वारा गलती से गलत तरीके से लागू की जाती है और उसके कारण अप्रत्याशित परिणाम दिखाई देता है, तो उस सुविधा में एक उच्च विस्मयकारी कारक होता है और इसलिए अवांछनीय है। यदि एक आवश्यक विशेषता में एक उच्च विस्मयकारी कारक है, तो सुविधा को फिर से डिज़ाइन करना आवश्यक हो सकता है।|doi=10.1147/sj.234.0326|author-link=Mike Cowlishaw|access-date=2014-01-23}}</ref> | ||
| Line 76: | Line 76: | ||
===1990 से पहले === | ===1990 से पहले === | ||
रेक्स को 20 मार्च 1979 और मध्य 1982 के बीच आईबीएम के माइक कोविलिशॉ द्वारा 'स्वयं-समय' परियोजना के रूप में असेंबली भाषा में डिजाइन और कार्यान्वित किया गया था, मूल रूप से [[EXEC]] और EXEC 2 भाषाओं को बदलने के लिए एक [[स्क्रिप्टिंग प्रोग्रामिंग भाषा]] के रूप में।<ref name=RexHist>{{cite web|url=http://www.rexxla.org/links/IBM_historical_pages/rexxhist.html|title=IBM REXX संक्षिप्त इतिहास|author=M. F. Cowlishaw|publisher=[[IBM]]|author-link=Mike Cowlishaw|access-date=2006-08-15}}</ref> इसे किसी भी सिस्टम के लिए मैक्रो (कंप्यूटर साइंस) या स्क्रिप्टिंग भाषा के रूप में डिजाइन किया गया था। जैसे, रेक्स को [[Tcl]] और Python (प्रोग्रामिंग भाषा) का अग्रदूत माना जाता है। रेक्स का उद्देश्य इसके निर्माता द्वारा [[पायथन (प्रोग्रामिंग भाषा)]] का एक सरलीकृत और सीखने में आसान संस्करण होना भी था। हालाँकि, PL/I से कुछ मतभेद अनजाने में हो सकते हैं। | |||
इसे पहली बार 1981 में ह्यूस्टन, टेक्सास में SHARE 56 सम्मेलन में सार्वजनिक रूप से वर्णित किया गया था।<ref>{{cite web|url=http://speleotrove.com/rexxhist/share56.txt <!-- http://www-306.ibm.com/software/awdtools/rexx/library/share56.html -->|title=REX - एक कमांड प्रोग्रामिंग लैंग्वेज|date=1981-02-18 |author=M. F. Cowlishaw |publisher=[[SHARE (computing)|SHARE]] |author-link=Mike Cowlishaw |access-date=2006-08-15}}</ref> जहां ग्राहकों की प्रतिक्रिया, [[एसएलएसी राष्ट्रीय त्वरक प्रयोगशाला]] के टेड जॉनस्टन द्वारा समर्थित, इसे 1982 में आईबीएम उत्पाद के रूप में भेज दिया गया। | इसे पहली बार 1981 में ह्यूस्टन, टेक्सास में SHARE 56 सम्मेलन में सार्वजनिक रूप से वर्णित किया गया था।<ref>{{cite web|url=http://speleotrove.com/rexxhist/share56.txt <!-- http://www-306.ibm.com/software/awdtools/rexx/library/share56.html -->|title=REX - एक कमांड प्रोग्रामिंग लैंग्वेज|date=1981-02-18 |author=M. F. Cowlishaw |publisher=[[SHARE (computing)|SHARE]] |author-link=Mike Cowlishaw |access-date=2006-08-15}}</ref> जहां ग्राहकों की प्रतिक्रिया, [[एसएलएसी राष्ट्रीय त्वरक प्रयोगशाला]] के टेड जॉनस्टन द्वारा समर्थित, इसे 1982 में आईबीएम उत्पाद के रूप में भेज दिया गया। | ||
इन वर्षों में आईबीएम ने अपने लगभग सभी ऑपरेटिंग सिस्टम (वीएम (ऑपरेटिंग सिस्टम) | वीएम/सीएमएस, एमवीएस | एमवीएस टीएसओ/ई, [[आईबीएम आई]], वीएसई (ऑपरेटिंग सिस्टम) | वीएसई/ईएसए, [[आईबीएम एआईएक्स]], पीसी डॉस, में रेक्स को शामिल किया। और OS/2), और [[नोवेल नेटवेयर]], [[माइक्रोसॉफ़्ट विंडोज़]], [[जावा (प्रोग्रामिंग भाषा)]] और [[लिनक्स]] के लिए | इन वर्षों में आईबीएम ने अपने लगभग सभी ऑपरेटिंग सिस्टम (वीएम (ऑपरेटिंग सिस्टम) | वीएम/सीएमएस, एमवीएस | एमवीएस टीएसओ/ई, [[आईबीएम आई]], वीएसई (ऑपरेटिंग सिस्टम) | वीएसई/ईएसए, [[आईबीएम एआईएक्स]], पीसी डॉस, में रेक्स को शामिल किया। और OS/2), और [[नोवेल नेटवेयर]], [[माइक्रोसॉफ़्ट विंडोज़]], [[जावा (प्रोग्रामिंग भाषा)]] और [[लिनक्स]] के लिए संस्करण उपलब्ध कराया है। | ||
पहला गैर-आईबीएम संस्करण 1984/5 में चार्ल्स डेनी द्वारा पीसी डॉस के लिए लिखा गया था<ref name=RexMay95>{{cite web |author=Melinda Varian | पहला गैर-आईबीएम संस्करण 1984/5 में चार्ल्स डेनी द्वारा पीसी डॉस के लिए लिखा गया था<ref name=RexMay95>{{cite web |author=Melinda Varian | ||
| Line 86: | Line 86: | ||
|title=रेक्स कार्यान्वयन|publisher=RexxLA |access-date=2006-08-15 | |title=रेक्स कार्यान्वयन|publisher=RexxLA |access-date=2006-08-15 | ||
|archive-url=https://web.archive.org/web/20060924072512/http://www.rexxla.org/About_Rexx/mfc/rexxplat.html | |archive-url=https://web.archive.org/web/20060924072512/http://www.rexxla.org/About_Rexx/mfc/rexxplat.html | ||
|archive-date=2006-09-24}}</ref> <!-- Bot retrieved archive --> | |archive-date=2006-09-24}}</ref> <!-- Bot retrieved archive --> रेक्स का [[Amiga]] संस्करण, जिसे ARxx कहा जाता है, को AmigaOS 2 के साथ शामिल किया गया था और यह स्क्रिप्टिंग के साथ-साथ एप्लिकेशन नियंत्रण के लिए लोकप्रिय था। कई Amiga अनुप्रयोगों में एक [[ARexx|Aरेक्स]] पोर्ट बनाया गया है जो रेक्स से एप्लिकेशन को नियंत्रित करने की अनुमति देता है। कई चल रहे अनुप्रयोगों को नियंत्रित करने के लिए एक एकल रेक्स स्क्रिप्ट विभिन्न रेक्स बंदरगाहों के बीच भी स्विच कर सकती है। | ||
=== 1990 से वर्तमान === | === 1990 से वर्तमान === | ||
1990 में, SLAC की कैथी डैगर ने पहली स्वतंत्र | 1990 में, SLAC की कैथी डैगर ने पहली स्वतंत्र रेक्स संगोष्ठी का आयोजन किया, जिसके कारण रेक्स भाषा एसोसिएशन का गठन हुआ। संगोष्ठी प्रतिवर्ष आयोजित की जाती हैं। | ||
रेक्स के कई [[फ्रीवेयर]] संस्करण उपलब्ध हैं। 1992 में, दो सबसे व्यापक रूप से उपयोग किए जाने वाले ओपन-सोर्स सॉफ़्टवेयर | ओपन-सोर्स पोर्ट दिखाई दिए: यूनिक्स के लिए इयान कोलियर का रेक्स/imc और एंडर्स क्रिस्टेंसन का रेजिना<ref name="regina"/>(बाद में मार्क हेस्लिंग द्वारा अपनाया गया) विंडोज और यूनिक्स के लिए। [http://ftp.gwdg.de/pub/languages/rexx/brexx/html/rx.html Bरेक्स] WinCE और पॉकेट पीसी प्लेटफॉर्म के लिए अच्छी तरह से जाना जाता है, और इसे VM/370 और MVS में बैक-पोर्ट किया गया है। | |||
OS/2 में Watcom [[VX-REXX|VX- | OS/2 में Watcom [[VX-REXX|VX-रेक्स]] का विजुअल डेवलपमेंट सिस्टम है। हॉकवेयर की एक अन्य बोली विज़प्रो रेक्स थी। | ||
किलोवाट द्वारा पोर्टेबल | किलोवाट द्वारा पोर्टेबल रेक्स और Quercus द्वारा व्यक्तिगत रेक्स दो रेक्स इंटरप्रेटर हैं जिन्हें DOS के लिए डिज़ाइन किया गया है और कमांड प्रॉम्प्ट का उपयोग करके विंडोज के तहत भी चलाया जा सकता है। 1990 के दशक के मध्य से, रेक्स के दो नए संस्करण सामने आए हैं: | ||
* [[NetRexx| | * [[NetRexx|Netरेक्स]]: जावा स्रोत कोड के माध्यम से जावा (प्रोग्रामिंग भाषा) [[बाइट कोड]] को संकलित करता है; इसमें कोई भी आरक्षित कीवर्ड नहीं है, और जावा ऑब्जेक्ट मॉडल का उपयोग करता है, और इसलिए आमतौर पर 'क्लासिक' रेक्स के साथ ऊपर-संगत नहीं होता है। | ||
* ऑब्जेक्ट | * ऑब्जेक्ट रेक्स: रेक्स का एक [[वस्तु के उन्मुख]] आम तौर पर ऊपर की ओर-संगत संस्करण। | ||
1996 में [[American National Standards Institute]] (ANSI) ने | 1996 में [[American National Standards Institute]] (ANSI) ने रेक्स के लिए एक मानक प्रकाशित किया: ANSI X3.274–1996 सूचना प्रौद्योगिकी - प्रोग्रामिंग भाषा रेक्स।<ref>While ANSI INCITS 274-1996/AMD1-2000 (R2001) and ANSI INCITS 274-1996 (R2007) are chargeable, a free draft can be downloaded: {{cite web |url=http://www.rexxla.org/rexxlang/standards/j18pub.pdf |title=American National Standard for Information Systems – Programming Language REXX |id=X3J18-199X}}</ref> 1985 से रेक्स पर दो दर्जन से अधिक पुस्तकें प्रकाशित हो चुकी हैं। | ||
रेक्स ने 20 मार्च 2004 को अपनी 25वीं वर्षगांठ मनाई, जिसे मई 2004 में जर्मनी के बॉबलिंगेन में रेक्स भाषा एसोसिएशन के 15वें अंतर्राष्ट्रीय रेक्स संगोष्ठी में मनाया गया। | |||
12 अक्टूबर 2004 को, आईबीएम ने [[सामान्य सार्वजनिक लाइसेंस]] के तहत अपने ऑब्जेक्ट | 12 अक्टूबर 2004 को, आईबीएम ने [[सामान्य सार्वजनिक लाइसेंस]] के तहत अपने ऑब्जेक्ट रेक्स कार्यान्वयन के स्रोतों को जारी करने की अपनी योजना की घोषणा की। ऑब्जेक्ट रेक्स के हाल के रिलीज़ में रेक्स भाषा के इस संस्करण को लागू करने वाला ActiveX विंडोज [[विंडोज स्क्रिप्टिंग होस्ट]]WSH) स्क्रिप्टिंग इंजन शामिल है। | ||
22 फरवरी, 2005 को ओपन ऑब्जेक्ट रेक्स ( | 22 फरवरी, 2005 को ओपन ऑब्जेक्ट रेक्स (ooरेक्स) की पहली सार्वजनिक रिलीज की घोषणा की गई। इस उत्पाद में एक WSH स्क्रिप्टिंग इंजन है जो विंडोज ऑपरेटिंग सिस्टम और रेक्स के साथ एप्लिकेशन को उसी तरह से प्रोग्रामिंग करने की अनुमति देता है जिसमें [[Visual Basic]] और [[JScript]] को डिफ़ॉल्ट WSH इंस्टॉलेशन और पर्ल, Tcl, Python (प्रोग्रामिंग भाषा) थर्ड-पार्टी द्वारा लागू किया जाता है। स्क्रिप्टिंग इंजन। | ||
{{As of|2017|January}} | {{As of|2017|January}} रेक्स को TIOBE इंडेक्स में शीर्ष 100 में शामिल पचास भाषाओं में से एक के रूप में सूचीबद्ध किया गया था जो शीर्ष 50 से संबंधित नहीं थी।<ref>{{cite web|url=http://www.tiobe.com/tiobe-index/|title=अगली 50 प्रोग्रामिंग भाषाएँ|work=[[TIOBE index]]|year=2017|publisher=tiobe.com|access-date=2017-01-10 |archive-url=https://web.archive.org/web/20170119054400/http://www.tiobe.com/tiobe-index/ |archive-date=2017-01-19 |url-status=live}}</ref> | ||
2019 में, 30वीं रेक्स | 2019 में, 30वीं रेक्स भाषा एसोसिएशन सिम्पोजियम ने रेक्स की 40वीं वर्षगांठ मनाई। संगोष्ठी हर्सले, इंग्लैंड में आयोजित की गई थी, जहां रेक्स को पहली बार डिजाइन और कार्यान्वित किया गया था।<ref>{{Cite web|url=https://www.rexxla.org/events/schedule.rsp?year=2019|title = RexxLA - संगोष्ठी अनुसूची}}</ref> | ||
=== टूलकिट === | === टूलकिट === | ||
रेक्स/Tk, ग्राफिक्स के लिए एक टूलकिट है जिसका उपयोग रेक्स प्रोग्राम्स में Tcl/Tk के रूप में व्यापक रूप से उपलब्ध है। | |||
विंडोज के लिए एक | विंडोज के लिए एक रेक्स IDE, RxxxEd विकसित किया गया है।<ref name=FosdickBook>{{cite book |author=Howard Fosdick |title=Rexx प्रोग्रामर का संदर्भ|publisher=[[Wiley Publishing]] |isbn=0-7645-7996-7 |year=2005 |page=390}}</ref> नेटवर्क संचार के साथ-साथ रेजिना रेक्स के अन्य ऐड-ऑन और कार्यान्वयन के लिए RxSock विकसित किया गया है, और विंडोज कमांड लाइन के लिए एक रेक्स दुभाषिया विंडोज के विभिन्न संस्करणों के लिए अधिकांश संसाधन किटों में आपूर्ति की जाती है और उन सभी के साथ-साथ काम करती है करने योग्य। | ||
=== वर्तनी और पूंजीकरण === | === वर्तनी और पूंजीकरण === | ||
मूल रूप से भाषा को Rex (Reformed Executor) कहा जाता था; अतिरिक्त X को अन्य उत्पादों के नामों के साथ टकराव से बचने के लिए जोड़ा गया था। REX मूल रूप से सभी अपरकेस था क्योंकि मेनफ्रेम कोड अपरकेस ओरिएंटेड था। उन दिनों की शैली में ऑल-कैप नाम होना था, आंशिक रूप से क्योंकि लगभग सभी कोड अभी भी ऑल-कैप थे। उत्पाद के लिए यह | मूल रूप से भाषा को Rex (Reformed Executor) कहा जाता था; अतिरिक्त X को अन्य उत्पादों के नामों के साथ टकराव से बचने के लिए जोड़ा गया था। REX मूल रूप से सभी अपरकेस था क्योंकि मेनफ्रेम कोड अपरकेस ओरिएंटेड था। उन दिनों की शैली में ऑल-कैप नाम होना था, आंशिक रूप से क्योंकि लगभग सभी कोड अभी भी ऑल-कैप थे। उत्पाद के लिए यह रेक्स बन गया, और माइक काउलीशॉ की पुस्तक के दोनों संस्करण ऑल-कैप का उपयोग करते हैं। 1984 में सिस्टम उत्पाद के लिए रीस्ट्रक्चर्ड एक्सटेंडेड एक्ज़ीक्यूटर के विस्तार का उपयोग किया गया था।<ref name="POLA"/> | ||
| Line 126: | Line 126: | ||
=== लूपिंग === | === लूपिंग === | ||
रेक्स में लूप कंट्रोल स्ट्रक्चर a से शुरू होता है <code>DO</code> और एक के साथ समाप्त होता है <code>END</code> लेकिन कई किस्मों में आता है। Netरेक्स कीवर्ड का उपयोग करता है <code>LOOP</code> के बजाय <code>DO</code> लूपिंग के लिए, जबकि ooरेक्स व्यवहार करता है <code>LOOP</code> तथा <code>DO</code> लूपिंग करते समय समकक्ष के रूप में। | |||
==== सशर्त पाश ==== | ==== सशर्त पाश ==== | ||
रेक्स किसी स्थिति का परीक्षण करने से पहले (<code>do while</code>) या के बाद (<code>do until</code>) निर्देशों की सूची निष्पादित की जाती है: | |||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
जबकि [हालत] | जबकि [हालत] | ||
[निर्देश] | [निर्देश] | ||
| Line 137: | Line 137: | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
[शर्त] तक करो | [शर्त] तक करो | ||
[निर्देश] | [निर्देश] | ||
| Line 144: | Line 144: | ||
==== दोहराए जाने वाले लूप्स ==== | ==== दोहराए जाने वाले लूप्स ==== | ||
अधिकांश भाषाओं की तरह, | अधिकांश भाषाओं की तरह, रेक्स एक इंडेक्स वेरिएबल को बढ़ाते समय लूप कर सकता है और एक सीमा तक पहुंचने पर रुक सकता है: | ||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
अनुक्रमणिका करें = प्रारंभ [सीमित करने के लिए] [वृद्धि द्वारा] [गिनती के लिए] | अनुक्रमणिका करें = प्रारंभ [सीमित करने के लिए] [वृद्धि द्वारा] [गिनती के लिए] | ||
[निर्देश] | [निर्देश] | ||
| Line 154: | Line 154: | ||
वेतन वृद्धि को छोड़ा जा सकता है और 1 के लिए डिफॉल्ट किया जा सकता है। सीमा को भी छोड़ा जा सकता है, जिससे लूप हमेशा के लिए जारी रहता है। | वेतन वृद्धि को छोड़ा जा सकता है और 1 के लिए डिफॉल्ट किया जा सकता है। सीमा को भी छोड़ा जा सकता है, जिससे लूप हमेशा के लिए जारी रहता है। | ||
रेक्स गिने हुए लूप की अनुमति देता है, जहां लूप की शुरुआत में एक एक्सप्रेशन की गणना की जाती है और लूप के भीतर के निर्देशों को कई बार निष्पादित किया जाता है: | |||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
अभिव्यक्ति करो | अभिव्यक्ति करो | ||
[निर्देश] | [निर्देश] | ||
| Line 163: | Line 163: | ||
कार्यक्रम समाप्त होने तक रेक्स भी लूप कर सकता है: | कार्यक्रम समाप्त होने तक रेक्स भी लूप कर सकता है: | ||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
हमेशा के लिए करो | हमेशा के लिए करो | ||
[निर्देश] | [निर्देश] | ||
| Line 172: | Line 172: | ||
==== संयुक्त लूप्स ==== | ==== संयुक्त लूप्स ==== | ||
PL/I की तरह, | PL/I की तरह, रेक्स सशर्त और दोहराए जाने वाले दोनों तत्वों को एक ही लूप में संयोजित करने की अनुमति देता है:<ref name="TRL">{{cite book |title=द रेक्स लैंग्वेज - ए प्रैक्टिकल एप्रोच टू प्रोग्रामिंग|author=M. F. Cowlishaw |author-link=Mike Cowlishaw |isbn=0-13-780651-5 |publisher=[[Prentice Hall]] |edition=2nd |year=1990}}</ref> | ||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
अनुक्रमणिका करें = प्रारंभ [सीमित करने के लिए] [वृद्धि द्वारा] [गिनती के लिए] [जबकि स्थिति] | अनुक्रमणिका करें = प्रारंभ [सीमित करने के लिए] [वृद्धि द्वारा] [गिनती के लिए] [जबकि स्थिति] | ||
[निर्देश] | [निर्देश] | ||
समाप्त | समाप्त | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
अभिव्यक्ति करो [शर्त तक] | अभिव्यक्ति करो [शर्त तक] | ||
[निर्देश] | [निर्देश] | ||
| Line 188: | Line 188: | ||
के साथ परीक्षण की स्थिति <code>IF</code>: | के साथ परीक्षण की स्थिति <code>IF</code>: | ||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
अगर [शर्त] तो | अगर [शर्त] तो | ||
करना | करना | ||
| Line 201: | Line 201: | ||
एकल निर्देशों के लिए, <code>DO</code> तथा <code>END</code> छोड़ा भी जा सकता है: | एकल निर्देशों के लिए, <code>DO</code> तथा <code>END</code> छोड़ा भी जा सकता है: | ||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
अगर [शर्त] तो | अगर [शर्त] तो | ||
[निर्देश] | [निर्देश] | ||
| Line 212: | Line 212: | ||
=== कई स्थितियों के लिए परीक्षण === | === कई स्थितियों के लिए परीक्षण === | ||
<code>SELECT</code> | <code>SELECT</code> रेक्स का [[स्विच स्टेटमेंट]] है, जैसे PL/I से प्राप्त कई अन्य निर्माण। CASE के कुछ कार्यान्वयनों की तरह अन्य गतिशील भाषाओं में निर्माण होता है, रेक्स's <code>WHEN</code> खंड पूरी शर्तें निर्दिष्ट करते हैं, जो एक दूसरे से संबंधित होने की आवश्यकता नहीं है। उसमें, वे अधिक के कैस्केड सेट की तरह हैं <code>IF-THEN-ELSEIF-THEN-...-ELSE</code> कोड की तुलना में वे सी या जावा की तरह हैं <code>switch</code> बयान। | ||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
चुनते हैं | चुनते हैं | ||
जब [हालत] तब | जब [हालत] तब | ||
| Line 231: | Line 231: | ||
=== सरल चर === | === सरल चर === | ||
रेक्स में वेरिएबल्स टाइपलेस हैं, और शुरुआत में अपर केस में उनके नाम के रूप में मूल्यांकन किया जाता है। इस प्रकार कार्यक्रम में इसके उपयोग के साथ एक चर का प्रकार भिन्न हो सकता है: | |||
<वाक्यविन्यास लैंग = | <वाक्यविन्यास लैंग = रेक्स> | ||
नमस्ते कहो /* => नमस्कार */ | नमस्ते कहो /* => नमस्कार */ | ||
नमस्ते = 25 | नमस्ते = 25 | ||
| Line 248: | Line 248: | ||
कई अन्य प्रोग्रामिंग भाषाओं के विपरीत, क्लासिक रेक्स के पास संख्यात्मक सूचकांक द्वारा संबोधित चर के सरणियों के लिए कोई प्रत्यक्ष समर्थन नहीं है। इसके बजाय यह यौगिक चर प्रदान करता है।<ref>{{Cite web|url=http://www.uic.edu/depts/accc/software/regina/rexxrule.html#p02h24|title=Rexx के लिए अंगूठे के छह नियम}}</ref> एक मिश्रित चर में एक तना होता है जिसके बाद एक पूंछ होती है। ए । (डॉट) का उपयोग तने को पूंछ से जोड़ने के लिए किया जाता है। यदि उपयोग की जाने वाली पूंछ संख्यात्मक हैं, तो सरणी के समान प्रभाव उत्पन्न करना आसान है। | कई अन्य प्रोग्रामिंग भाषाओं के विपरीत, क्लासिक रेक्स के पास संख्यात्मक सूचकांक द्वारा संबोधित चर के सरणियों के लिए कोई प्रत्यक्ष समर्थन नहीं है। इसके बजाय यह यौगिक चर प्रदान करता है।<ref>{{Cite web|url=http://www.uic.edu/depts/accc/software/regina/rexxrule.html#p02h24|title=Rexx के लिए अंगूठे के छह नियम}}</ref> एक मिश्रित चर में एक तना होता है जिसके बाद एक पूंछ होती है। ए । (डॉट) का उपयोग तने को पूंछ से जोड़ने के लिए किया जाता है। यदि उपयोग की जाने वाली पूंछ संख्यात्मक हैं, तो सरणी के समान प्रभाव उत्पन्न करना आसान है। | ||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
क्या मैं = 1 से 10 | क्या मैं = 1 से 10 | ||
स्टेम.आई = 10 - आई | स्टेम.आई = 10 - आई | ||
| Line 258: | Line 258: | ||
सरणियों के विपरीत, स्टेम चर के सूचकांक के लिए पूर्णांक मान होना आवश्यक नहीं है। उदाहरण के लिए, निम्न कोड मान्य है: | सरणियों के विपरीत, स्टेम चर के सूचकांक के लिए पूर्णांक मान होना आवश्यक नहीं है। उदाहरण के लिए, निम्न कोड मान्य है: | ||
<वाक्यविन्यास लैंग = | <वाक्यविन्यास लैंग = रेक्स> | ||
मैं = 'सोमवार' | मैं = 'सोमवार' | ||
स्टेम.आई = 2 | स्टेम.आई = 2 | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
रेक्स में स्टेम के लिए डिफ़ॉल्ट मान सेट करना भी संभव है। | |||
<वाक्यविन्यास लैंग = | <वाक्यविन्यास लैंग = रेक्स> | ||
तना। = 'अज्ञात' | तना। = 'अज्ञात' | ||
स्टेम.1 = 'यूएसए' | स्टेम.1 = 'यूएसए' | ||
| Line 276: | Line 276: | ||
DROP स्टेटमेंट से पूरे तने को भी मिटाया जा सकता है। | DROP स्टेटमेंट से पूरे तने को भी मिटाया जा सकता है। | ||
<वाक्यविन्यास लैंग = | <वाक्यविन्यास लैंग = रेक्स> | ||
ड्रॉप तना। | ड्रॉप तना। | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
| Line 284: | Line 284: | ||
सम्मेलन द्वारा (और भाषा के हिस्से के रूप में नहीं) यौगिक <code>stem.0</code> अक्सर एक स्टेम में कितने आइटम हैं इसका ट्रैक रखने के लिए प्रयोग किया जाता है, उदाहरण के लिए सूची में एक शब्द जोड़ने की प्रक्रिया को इस तरह कोडित किया जा सकता है: | सम्मेलन द्वारा (और भाषा के हिस्से के रूप में नहीं) यौगिक <code>stem.0</code> अक्सर एक स्टेम में कितने आइटम हैं इसका ट्रैक रखने के लिए प्रयोग किया जाता है, उदाहरण के लिए सूची में एक शब्द जोड़ने की प्रक्रिया को इस तरह कोडित किया जा सकता है: | ||
<वाक्यविन्यास लैंग = | <वाक्यविन्यास लैंग = रेक्स> | ||
add_word: प्रक्रिया शब्दकोश को उजागर करती है। | add_word: प्रक्रिया शब्दकोश को उजागर करती है। | ||
पार्स आर्ग डब्ल्यू | पार्स आर्ग डब्ल्यू | ||
| Line 295: | Line 295: | ||
मिश्रित चर के पुच्छ में अनेक तत्वों का होना भी संभव है। उदाहरण के लिए: | मिश्रित चर के पुच्छ में अनेक तत्वों का होना भी संभव है। उदाहरण के लिए: | ||
<वाक्यविन्यास लैंग = | <वाक्यविन्यास लैंग = रेक्स> | ||
एम = 'जुलाई' | एम = 'जुलाई' | ||
डी = 15 | डी = 15 | ||
| Line 304: | Line 304: | ||
बहु-आयामी सरणी के प्रभाव को प्रदान करने के लिए एकाधिक संख्यात्मक पूंछ तत्वों का उपयोग किया जा सकता है। | बहु-आयामी सरणी के प्रभाव को प्रदान करने के लिए एकाधिक संख्यात्मक पूंछ तत्वों का उपयोग किया जा सकता है। | ||
रेक्स यौगिक चर के समान सुविधाएँ कई अन्य भाषाओं में पाई जाती हैं (AWK प्रोग्रामिंग भाषा में साहचर्य सरणियों सहित, पर्ल में [[हैश टेबल]] और जावा (प्रोग्रामिंग भाषा) में हैशटेबल्स)। इनमें से अधिकतर भाषाएं इस तरह के निर्माण के सभी चाबियों (या रेक्स शर्तों में पूंछ) पर पुनरावृति करने के लिए एक निर्देश प्रदान करती हैं, लेकिन क्लासिक रेक्स में इसकी कमी है। इसके बजाय पूंछ मूल्यों की सहायक सूचियों को उपयुक्त रखना आवश्यक है। उदाहरण के लिए, किसी प्रोग्राम में शब्दों की गिनती करने के लिए किसी शब्द की प्रत्येक घटना को रिकॉर्ड करने के लिए निम्नलिखित प्रक्रिया का उपयोग किया जा सकता है। | |||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
add_word: प्रक्रिया एक्सपोज़ गिनती। शब्द सूची | add_word: प्रक्रिया एक्सपोज़ गिनती। शब्द सूची | ||
पार्स आर्ग डब्ल्यू। | पार्स आर्ग डब्ल्यू। | ||
| Line 316: | Line 316: | ||
और फिर बाद में: | और फिर बाद में: | ||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
क्या मैं = 1 शब्दों के लिए (word_list) | क्या मैं = 1 शब्दों के लिए (word_list) | ||
डब्ल्यू = शब्द (शब्द_सूची, मैं) | डब्ल्यू = शब्द (शब्द_सूची, मैं) | ||
| Line 325: | Line 325: | ||
कुछ स्पष्टता की कीमत पर इन तकनीकों को एक ही तने में संयोजित करना संभव है: | कुछ स्पष्टता की कीमत पर इन तकनीकों को एक ही तने में संयोजित करना संभव है: | ||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
add_word: प्रक्रिया शब्दकोश को उजागर करती है। | add_word: प्रक्रिया शब्दकोश को उजागर करती है। | ||
पार्स आर्ग डब्ल्यू। | पार्स आर्ग डब्ल्यू। | ||
| Line 340: | Line 340: | ||
और बाद में: | और बाद में: | ||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
do i = 1 to dictionary.0 | do i = 1 to dictionary.0 | ||
डब्ल्यू = डिक्शनरी.आई | डब्ल्यू = डिक्शनरी.आई | ||
| Line 347: | Line 347: | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
रेक्स यहां कोई सुरक्षा जाल प्रदान नहीं करता है, इसलिए यदि कोई एक शब्द पूर्ण संख्या से कम होता है <code>dictionary.0</code> यह तकनीक रहस्यमय तरीके से विफल हो जाएगी। | |||
IBM के ऑब्जेक्ट | IBM के ऑब्जेक्ट रेक्स सहित रेक्स के हाल के कार्यान्वयन और ooरेक्स जैसे ओपन सोर्स कार्यान्वयन में स्टेम के मान पर पुनरावृत्ति को सरल बनाने के लिए एक नई भाषा का निर्माण शामिल है, या किसी अन्य संग्रह वस्तु जैसे कि सरणी, तालिका या सूची पर। | ||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = ooरेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
क्या मैं तने के ऊपर हूं। | क्या मैं तने के ऊपर हूं। | ||
कहो मैं '-->' स्टेम.आई | कहो मैं '-->' स्टेम.आई | ||
| Line 361: | Line 361: | ||
==== पार्स ==== <code>PARSE</code> ई> निर्देश विशेष रूप से शक्तिशाली है; यह कुछ उपयोगी स्ट्रिंग-हैंडलिंग फ़ंक्शंस को जोड़ती है। इसका सिंटैक्स है: | ==== पार्स ==== <code>PARSE</code> ई> निर्देश विशेष रूप से शक्तिशाली है; यह कुछ उपयोगी स्ट्रिंग-हैंडलिंग फ़ंक्शंस को जोड़ती है। इसका सिंटैक्स है: | ||
<वाक्यविन्यास लैंग = | <वाक्यविन्यास लैंग = रेक्स> | ||
पार्स [ऊपरी] मूल [टेम्पलेट] | पार्स [ऊपरी] मूल [टेम्पलेट] | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
| Line 369: | Line 369: | ||
* <code>arg</code> (तर्क, कमांड लाइन के शीर्ष स्तर की पूंछ पर) | * <code>arg</code> (तर्क, कमांड लाइन के शीर्ष स्तर की पूंछ पर) | ||
* <code>linein</code> (मानक इनपुट, जैसे कीबोर्ड) | * <code>linein</code> (मानक इनपुट, जैसे कीबोर्ड) | ||
* <code>pull</code> ( | * <code>pull</code> (रेक्स डेटा कतार या मानक इनपुट) | ||
* <code>source</code> (कार्यक्रम को कैसे क्रियान्वित किया गया, इसकी जानकारी) | * <code>source</code> (कार्यक्रम को कैसे क्रियान्वित किया गया, इसकी जानकारी) | ||
* <code>value</code> (एक अभिव्यक्ति) <code>with</code>: कीवर्ड <code>with</code> यह इंगित करना आवश्यक है कि अभिव्यक्ति कहाँ समाप्त होती है | * <code>value</code> (एक अभिव्यक्ति) <code>with</code>: कीवर्ड <code>with</code> यह इंगित करना आवश्यक है कि अभिव्यक्ति कहाँ समाप्त होती है | ||
| Line 387: | Line 387: | ||
टेम्पलेट के रूप में चरों की सूची का उपयोग करना | टेम्पलेट के रूप में चरों की सूची का उपयोग करना | ||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
myVar = जॉन स्मिथ | myVar = जॉन स्मिथ | ||
पार्स var myVar firstName lastName | पार्स var myVar firstName lastName | ||
| Line 403: | Line 403: | ||
टेम्पलेट के रूप में सीमांकक का उपयोग करना: | टेम्पलेट के रूप में सीमांकक का उपयोग करना: | ||
<वाक्यविन्यास लैंग = | <वाक्यविन्यास लैंग = रेक्स> | ||
myVar = स्मिथ, जॉन | myVar = स्मिथ, जॉन | ||
पार्स var myVar LastName , FirstName | पार्स var myVar LastName , FirstName | ||
| Line 419: | Line 419: | ||
स्तंभ संख्या सीमांकक का उपयोग करना: | स्तंभ संख्या सीमांकक का उपयोग करना: | ||
<वाक्यविन्यास लैंग = | <वाक्यविन्यास लैंग = रेक्स> | ||
मायवर = (202) 123-1234 | मायवर = (202) 123-1234 | ||
पार्स var MyVar 2 एरियाकोड 5 7 सबनंबर | पार्स var MyVar 2 एरियाकोड 5 7 सबनंबर | ||
| Line 437: | Line 437: | ||
==== व्याख्या ==== | ==== व्याख्या ==== | ||
INTERPRET निर्देश अपने तर्क का मूल्यांकन करता है और इसके मान को | INTERPRET निर्देश अपने तर्क का मूल्यांकन करता है और इसके मान को रेक्स कथन के रूप में मानता है। कभी-कभी INTERPRET किसी कार्य को करने का सबसे स्पष्ट तरीका है, लेकिन इसका उपयोग अक्सर वहाँ किया जाता है जहाँ स्पष्ट कोड का उपयोग करना संभव होता है, जैसे, <code>value()</code>. | ||
INTERPRET के अन्य उपयोग | INTERPRET के अन्य उपयोग रेक्स's (दशमलव) मनमाने ढंग से सटीक अंकगणित (फ़ज़ी तुलनाओं सहित), प्रोग्रामेटिक टेम्प्लेट, स्टेम्ड एरेज़ और विरल सरणियों के साथ PARSE स्टेटमेंट का उपयोग हैं।{{how|date=January 2021}} | ||
<वाक्यविन्यास लैंग = | <वाक्यविन्यास लैंग = रेक्स> | ||
/* वर्ग(4) के साथ व्याख्या प्रदर्शित करें => 16 */ | /* वर्ग(4) के साथ व्याख्या प्रदर्शित करें => 16 */ | ||
एक्स = 'वर्ग' | एक्स = 'वर्ग' | ||
| Line 447: | Line 447: | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
यह 16 प्रदर्शित करता है और बाहर निकलता है। क्योंकि | यह 16 प्रदर्शित करता है और बाहर निकलता है। क्योंकि रेक्स में चर सामग्री स्ट्रिंग्स हैं, जिसमें एक्सपोनेंट और यहां तक कि पूरे प्रोग्राम के साथ परिमेय संख्याएं शामिल हैं, रेक्स स्ट्रिंग्स को मूल्यांकन किए गए भावों के रूप में व्याख्या करने की पेशकश करता है। | ||
इस सुविधा का उपयोग फ़ंक्शन मापदंडों के रूप में कार्यों को पारित करने के लिए किया जा सकता है, जैसे कि इंटीग्रल की गणना करने के लिए SIN या COS को एक प्रक्रिया में पास करना। | इस सुविधा का उपयोग फ़ंक्शन मापदंडों के रूप में कार्यों को पारित करने के लिए किया जा सकता है, जैसे कि इंटीग्रल की गणना करने के लिए SIN या COS को एक प्रक्रिया में पास करना। | ||
रेक्स ABS, DIGITS, MAX, MIN, SIGN, RANDOM जैसे केवल बुनियादी गणित कार्यों और बिट संचालन के साथ हेक्स प्लस बाइनरी रूपांतरणों का एक पूरा सेट प्रदान करता है। एसआईएन जैसे अधिक जटिल कार्यों को खरोंच से लागू किया गया था या तीसरे पक्ष के बाहरी पुस्तकालय (कंप्यूटिंग) से प्राप्त किया गया था। कुछ बाहरी पुस्तकालय, विशेष रूप से पारंपरिक भाषाओं में लागू किए गए, विस्तारित परिशुद्धता का समर्थन नहीं करते थे। | |||
बाद के संस्करण (गैर-क्लासिक) समर्थन करते हैं <code>CALL variable</code> निर्माण। साथ में बिल्ट-इन फ़ंक्शन <code>VALUE</code>, CALL के कई मामलों के स्थान पर उपयोग किया जा सकता है <code>INTERPRET</code>. यह एक क्लासिक प्रोग्राम है: | बाद के संस्करण (गैर-क्लासिक) समर्थन करते हैं <code>CALL variable</code> निर्माण। साथ में बिल्ट-इन फ़ंक्शन <code>VALUE</code>, CALL के कई मामलों के स्थान पर उपयोग किया जा सकता है <code>INTERPRET</code>. यह एक क्लासिक प्रोग्राम है: | ||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
/ * इनपुट निकास या इसी तरह से समाप्त * / | / * इनपुट निकास या इसी तरह से समाप्त * / | ||
हमेशा के लिए करो; लाइनिन की व्याख्या करें (); समाप्त | हमेशा के लिए करो; लाइनिन की व्याख्या करें (); समाप्त | ||
| Line 462: | Line 462: | ||
थोड़ा और परिष्कृत रेक्स कैलकुलेटर: | थोड़ा और परिष्कृत रेक्स कैलकुलेटर: | ||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
एक्स = 'छोड़ने के लिए अलविदा इनपुट' | एक्स = 'छोड़ने के लिए अलविदा इनपुट' | ||
X = 'BYE' तक करें; व्याख्या 'कहो' एक्स; एक्स खींचो; समाप्त | X = 'BYE' तक करें; व्याख्या 'कहो' एक्स; एक्स खींचो; समाप्त | ||
| Line 469: | Line 469: | ||
<code>PULL</code> के लिए आशुलिपि है <code>parse upper pull</code>. वैसे ही, <code>ARG</code> के लिए आशुलिपि है <code>parse upper arg</code>. | <code>PULL</code> के लिए आशुलिपि है <code>parse upper pull</code>. वैसे ही, <code>ARG</code> के लिए आशुलिपि है <code>parse upper arg</code>. | ||
INTERPRET निर्देश की शक्ति के अन्य उपयोग थे। वेलोर (सॉफ्टवेयर) पैकेज [[वस्तु उन्मुख कार्यकर्म]] वातावरण को लागू करने के लिए | INTERPRET निर्देश की शक्ति के अन्य उपयोग थे। वेलोर (सॉफ्टवेयर) पैकेज [[वस्तु उन्मुख कार्यकर्म]] वातावरण को लागू करने के लिए रेक्स की व्याख्यात्मक क्षमता पर निर्भर था। टाइम मशीन नामक एक अप्रकाशित [[वेस्टिंगहाउस इलेक्ट्रिक (1886)]] उत्पाद में एक अन्य उपयोग पाया गया जो एक घातक त्रुटि के बाद पूरी तरह से ठीक होने में सक्षम था। | ||
==== संख्यात्मक ==== | ==== संख्यात्मक ==== | ||
<वाक्यविन्यास लैंग = | <वाक्यविन्यास लैंग = रेक्स> | ||
अंक कहें () फ़ज़ () फॉर्म () /* => 9 0 वैज्ञानिक */ | अंक कहें () फ़ज़ () फॉर्म () /* => 9 0 वैज्ञानिक */ | ||
कहें 999999999+1 /* => 1.000000000E+9 */ | कहें 999999999+1 /* => 1.000000000E+9 */ | ||
| Line 532: | Line 532: | ||
=== त्रुटि से निपटने और अपवाद === | === त्रुटि से निपटने और अपवाद === | ||
रेक्स में SIGNAL निर्देश का उपयोग करके त्रुटियों और अन्य अपवादों को रोकना और उनसे निपटना संभव है। सात सिस्टम कंडीशन हैं: एरर, फेल्योर, हॉल्ट, नोवैल्यू, नोट्रेडी, लॉस्टडिजिट्स और सिंटेक्स। स्रोत कोड में वांछित के रूप में प्रत्येक की हैंडलिंग को चालू और बंद किया जा सकता है। | |||
उपयोगकर्ता द्वारा समाप्त किए जाने तक निम्न प्रोग्राम चलेगा: | उपयोगकर्ता द्वारा समाप्त किए जाने तक निम्न प्रोग्राम चलेगा: | ||
<वाक्यविन्यास हाइलाइट लैंग = | <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> | ||
रुकने का संकेत; | रुकने का संकेत; | ||
ए = 1 करो | ए = 1 करो | ||
| Line 569: | Line 569: | ||
जब किसी शर्त को संभाला जाता है <code>SIGNAL ON</code>, द <code>SIGL</code> तथा <code>RC</code> स्थिति को समझने के लिए सिस्टम चर का विश्लेषण किया जा सकता है। आरसी में रेक्स त्रुटि कोड होता है और एसआईजीएल में वह पंक्ति संख्या होती है जहां त्रुटि उत्पन्न हुई थी। | जब किसी शर्त को संभाला जाता है <code>SIGNAL ON</code>, द <code>SIGL</code> तथा <code>RC</code> स्थिति को समझने के लिए सिस्टम चर का विश्लेषण किया जा सकता है। आरसी में रेक्स त्रुटि कोड होता है और एसआईजीएल में वह पंक्ति संख्या होती है जहां त्रुटि उत्पन्न हुई थी। | ||
रेक्स संस्करण 4 के साथ शुरू होने वाली स्थितियों को नाम मिल सकते हैं, और एक भी है <code>CALL ON</code> निर्माण। यह आसान है अगर बाहरी कार्य जरूरी नहीं हैं: | |||
<वाक्यविन्यास लैंग = | <वाक्यविन्यास लैंग = रेक्स> | ||
ChangeCodePage: कार्यविधि /* SIGNAL सेटिंग सुरक्षित करें */ | ChangeCodePage: कार्यविधि /* SIGNAL सेटिंग सुरक्षित करें */ | ||
सिंटैक्स नाम ChangeCodePage.Trap पर संकेत | सिंटैक्स नाम ChangeCodePage.Trap पर संकेत | ||
वापसी SysQueryProcessCodePage () | वापसी SysQueryProcessCodePage () | ||
ChangeCodePage.Trap: OS/2 पर 1004 /* | ChangeCodePage.Trap: OS/2 पर 1004 /* विंडोज-1252 लौटाएं */ | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
| Line 617: | Line 617: | ||
{{commons category|REXX (programming language)}} | {{commons category|REXX (programming language)}} | ||
* [http://speleotrove.com/mfc/mfc.html Mike Cowlishaw's home page] | * [http://speleotrove.com/mfc/mfc.html Mike Cowlishaw's home page] | ||
* [https://www.ibm.com/us-en/marketplace/compiler-and-library-for-rexx-on-ibm-z | * [https://www.ibm.com/us-en/marketplace/compiler-and-library-for-rexx-on-ibm-z रेक्स language page] at IBM | ||
* [https://www.rexxla.org/ | * [https://www.rexxla.org/ रेक्स Language Association] | ||
* [https://www.openhub.net/languages/rexx | * [https://www.openhub.net/languages/rexx रेक्स programming language] at [[Open Hub]] | ||
{{IBM FOSS}} | {{IBM FOSS}} | ||
Revision as of 12:18, 5 January 2023
This article is written like a manual or guidebook. (September 2022) (Learn how and when to remove this template message) |
| File:Rexx-img-lg.png | |
| Paradigm | multiparadigm: procedural, structured |
|---|---|
| द्वारा डिज़ाइन किया गया | Mike Cowlishaw |
| Developer | Mike Cowlishaw, IBM |
| पहली प्रस्तुति | 1979 |
| Stable release | ANSI X3.274
/ 1996 |
| टाइपिंग अनुशासन | Dynamic |
| फ़ाइल नाम एक्सटेंशनएस | .cmd, .bat, .exec, .rexx, .rex, EXEC |
| Major implementations | |
| VM/SP R3, TSO/E V2, SAAREXX, ARexx, BREXX, Regina,[1] Personal REXX, REXX/imc | |
| Dialects | |
| NetRexx, Object REXX, now ooREXX, KEXX | |
| Influenced by | |
| PL/I, ALGOL, EXEC, EXEC 2 | |
| Influenced | |
| NetRexx, Object REXX | |
| |
रेक्स (पुनर्गठित विस्तारित निष्पादक) एक प्रोग्रामिंग भाषा है जिसे व्याख्या (कंप्यूटिंग) या संकलित किया जा सकता है। यह आईबीएम में माइक काउलिशॉ द्वारा विकसित किया गया था।[2][3] यह एक संरचित, उच्च स्तरीय प्रोग्रामिंग भाषा है जिसे सीखने और पढ़ने में आसानी के लिए डिज़ाइन किया गया है। कंप्यूटिंग प्लेटफॉर्म की एक विस्तृत श्रृंखला के लिए मालिकाना और खुला स्रोत सॉफ्टवेयर रेक्स दुभाषिया (कंप्यूटिंग) उपस्थित है; आईबीएम मेनफ़्रेम कंप्यूटर के लिए संकलनकर्ता उपस्थित हैं।[4]
रेक्स एक पूर्ण भाषा है जिसका उपयोग स्क्रिप्टिंग भाषा, मैक्रो (कंप्यूटर विज्ञान) भाषा और अनुप्रयोग विकास भाषा के रूप में किया जा सकता है। इसका उपयोग अक्सर डेटा और पाठ को संसाधित करने और रिपोर्ट तैयार करने के लिए किया जाता है; पर्ल के साथ इन समानताओं का अर्थ है कि रेक्स कॉमन गेटवे इंटरफ़ेस (सीजीआई) प्रोग्रामिंग में अच्छा काम करता है और यह वास्तविक में इस उद्देश्य के लिए उपयोग किया जाता है। कुछ ऑपरेटिंग सिस्टम में रेक्स प्राथमिक स्क्रिप्टिंग भाषा है, उदा। OS/2, MVS, VM (ऑपरेटिंग सिस्टम), AmigaOS, और SPF/PC, XEDIT, THE और ZOC (सॉफ़्टवेयर) टर्मिनल एमुलेटर जैसे कुछ अन्य सॉफ़्टवेयर में आंतरिक मैक्रो भाषा के रूप में भी उपयोग किया जाता है। इसके अतिरिक्त, रेक्स भाषा का उपयोग किसी भी प्रोग्राम में स्क्रिप्टिंग और मैक्रोज़ के लिए किया जा सकता है जो विंडोज स्क्रिप्टिंग होस्ट ActiveX भाषा का अंकन भाषाओं (जैसे VBScript और JScript) का उपयोग करता है यदि रेक्स इंजनों में से एक स्थापित है।
रेक्स को VM/SP रिलीज 3 ऑन अप, TSO/E संस्करण 2 ऑन अप, OS/2 (1.3 और बाद में, जहां इसे आधिकारिक रूप से प्रोसीजर्स भाषा/2 नाम दिया गया है), AmigaOS संस्करण 2 ऑन अप, PC DOS (7.0 या 2000) ArcaOS और विंडोज NT 4.0 (संसाधन किट: रेजिना) के साथ आपूर्ति की जाती है।[5] CMS के लिए रेक्स स्क्रिप्ट फ़ाइल प्रकार EXEC को EXEC और EXEC2 के साथ साझा करती है, और स्क्रिप्ट की पहली पंक्ति उपयोग किए जाने वाले दुभाषिया को निर्दिष्ट करती है। MVS के लिए रेक्स स्क्रिप्ट्स हो सकती हैं[lower-alpha 1] निम्न स्तर के क्वालीफायर EXEC द्वारा पहचाना जा सकता है या हो सकता है[lower-alpha 2] संदर्भ और पहली पंक्ति से पहचाना जाना चाहिए। OS/2 के लिए रेक्स स्क्रिप्ट फ़ाइल नाम एक्सटेंशन .cmd को अन्य स्क्रिप्टिंग भाषाओं के साथ साझा करती है, और स्क्रिप्ट की पहली पंक्ति उपयोग किए जाने वाले दुभाषिया को निर्दिष्ट करती है। रेक्स-जागरूक अनुप्रयोगों के लिए रेक्स मैक्रोज़ एप्लिकेशन द्वारा निर्धारित एक्सटेंशन का उपयोग करते हैं। 1980 के दशक के उत्तरार्ध में, रेक्स आईबीएम सिस्टम एप्लीकेशन आर्किटेक्चर के लिए सामान्य स्क्रिप्टिंग भाषा बन गई, जहाँ इसका नाम परिवर्तितकर SAA प्रोसीजर भाषा रेक्स कर दिया गया है।
एक रेक्स स्क्रिप्ट या कमांड को कभी-कभी EXEC, EXEC 2[6] और CP/CMS पर रेक्स स्क्रिप्ट और z/VM के माध्यम से VM/370 के लिए उपयोग किए जाने वाले CMS फ़ाइल प्रकार के लिए एक नोड के रूप में संदर्भित किया जाता है।[7]
सुविधाएँ
रेक्स में निम्नलिखित विशेषताएं और विशेषताएं हैं:
- सरल वाक्य रचना
- कई वातावरणों में कमांड को रूट करने की क्षमता
- एक विशिष्ट आह्वान वातावरण से जुड़े कार्यों, प्रक्रियाओं और आदेशों का समर्थन करने की क्षमता।
- एक बिल्ट-इन स्टैक, यदि कोई हो तो होस्ट स्टैक के साथ इंटरऑपरेट करने की क्षमता के साथ।
- छोटे निर्देश सेट में सिर्फ दो दर्जन निर्देश होते हैं
- फ्री-फॉर्म भाषा सिंटैक्स
- चर नाम सहित केस-असंवेदनशील टोकन
- वर्ण स्ट्रिंग आधार
- टाइप सिस्टम # डायनामिक टाइपिंग, कोई घोषणा नहीं
- स्थानीय संदर्भ को छोड़कर कोई आरक्षित शब्द नहीं
- फ़ाइल सुविधाएं शामिल नहीं हैं
- मनमाना-सटीक अंकगणित
- दशमलव अंकगणित, तैरनेवाला स्थल
- अंतर्निहित कार्यों का एक समृद्ध चयन, विशेष रूप से स्ट्रिंग और वर्ड प्रोसेसिंग
- स्वचालित भंडारण प्रबंधन
- क्रैश सुरक्षा
- सामग्री पता करने योग्य डेटा संरचनाएं
- साहचर्य सरणियाँ
- सिस्टम कमांड और सुविधाओं तक सीधी पहुंच
- आसान एरर-हैंडलिंग, और बिल्ट-इन ट्रेसिंग और डिबगर
- कुछ कृत्रिम सीमाएँ
- सरलीकृत I/O सुविधाएं
- अपरंपरागत ऑपरेटरों
- विशिष्ट कार्यान्वयन को छोड़कर केवल आंशिक रूप से यूनिक्स शैली कमांड लाइन पैरामीटर का समर्थन करता है
- विशिष्ट कार्यान्वयनों को छोड़कर, भाषा के हिस्से के रूप में कोई बुनियादी टर्मिनल नियंत्रण प्रदान नहीं करता है
- विशिष्ट कार्यान्वयनों को छोड़कर बाहरी पुस्तकालयों से कार्यों और सबरूटीन्स को शामिल करने का कोई सामान्य तरीका प्रदान नहीं करता है
रेक्स में सिर्फ तेईस हैं, मोटे तौर पर स्व-स्पष्ट, निर्देश (जैसे call, parse, तथा select) न्यूनतम विराम चिह्न और स्वरूपण आवश्यकताओं के साथ। यह अनिवार्य रूप से केवल एक डेटा-प्रकार, वर्ण स्ट्रिंग के साथ एक लगभग मुक्त रूप वाली भाषा है; इस दर्शन का अर्थ है कि सभी डेटा दृश्यमान (प्रतीकात्मक) हैं और डिबगिंग और ट्रेसिंग सरल हैं।
रेक्स का सिंटैक्स PL/I के समान दिखता है, लेकिन इसमें कम संकेत हैं; इससे (कार्यक्रम द्वारा) पार्स करना कठिन हो जाता है, लेकिन उन मामलों को छोड़कर उपयोग करना आसान हो जाता है, जहां पीएल/आई की आदतें आश्चर्य का कारण बन सकती हैं। रेक्स डिजाइन लक्ष्यों में से एक कम से कम विस्मय का सिद्धांत था।[8]
इतिहास
1990 से पहले
रेक्स को 20 मार्च 1979 और मध्य 1982 के बीच आईबीएम के माइक कोविलिशॉ द्वारा 'स्वयं-समय' परियोजना के रूप में असेंबली भाषा में डिजाइन और कार्यान्वित किया गया था, मूल रूप से EXEC और EXEC 2 भाषाओं को बदलने के लिए एक स्क्रिप्टिंग प्रोग्रामिंग भाषा के रूप में।[2] इसे किसी भी सिस्टम के लिए मैक्रो (कंप्यूटर साइंस) या स्क्रिप्टिंग भाषा के रूप में डिजाइन किया गया था। जैसे, रेक्स को Tcl और Python (प्रोग्रामिंग भाषा) का अग्रदूत माना जाता है। रेक्स का उद्देश्य इसके निर्माता द्वारा पायथन (प्रोग्रामिंग भाषा) का एक सरलीकृत और सीखने में आसान संस्करण होना भी था। हालाँकि, PL/I से कुछ मतभेद अनजाने में हो सकते हैं।
इसे पहली बार 1981 में ह्यूस्टन, टेक्सास में SHARE 56 सम्मेलन में सार्वजनिक रूप से वर्णित किया गया था।[9] जहां ग्राहकों की प्रतिक्रिया, एसएलएसी राष्ट्रीय त्वरक प्रयोगशाला के टेड जॉनस्टन द्वारा समर्थित, इसे 1982 में आईबीएम उत्पाद के रूप में भेज दिया गया।
इन वर्षों में आईबीएम ने अपने लगभग सभी ऑपरेटिंग सिस्टम (वीएम (ऑपरेटिंग सिस्टम) | वीएम/सीएमएस, एमवीएस | एमवीएस टीएसओ/ई, आईबीएम आई, वीएसई (ऑपरेटिंग सिस्टम) | वीएसई/ईएसए, आईबीएम एआईएक्स, पीसी डॉस, में रेक्स को शामिल किया। और OS/2), और नोवेल नेटवेयर, माइक्रोसॉफ़्ट विंडोज़, जावा (प्रोग्रामिंग भाषा) और लिनक्स के लिए संस्करण उपलब्ध कराया है।
पहला गैर-आईबीएम संस्करण 1984/5 में चार्ल्स डेनी द्वारा पीसी डॉस के लिए लिखा गया था[3] और मैन्सफील्ड सॉफ्टवेयर ग्रुप (1986 में केविन जे. केर्नी द्वारा स्थापित) द्वारा विपणन किया गया।[2]1987 में लुंडिन और वुड्रूफ़ द्वारा सीएमएस के लिए लिखा गया पहला संकलक संस्करण सामने आया।[10] अटारी, अमिगाओएस, यूनिक्स (कई संस्करण), सोलारिस (ऑपरेटिंग सिस्टम), डिजिटल उपकरण निगम, माइक्रोसॉफ्ट विंडोज, विंडोज सीई, जेब में रखने लायक कंप्यूटर, डॉस, पाम ओएस, क्यूएनएक्स, ओएस/2, लिनक्स, BeOS के लिए अन्य संस्करण भी विकसित किए गए हैं। , EPOC32/सिम्बियन, AtheOS, OpenVMS,[11]: p.305 Apple Macintosh, और Mac OS X।[12] रेक्स का Amiga संस्करण, जिसे ARxx कहा जाता है, को AmigaOS 2 के साथ शामिल किया गया था और यह स्क्रिप्टिंग के साथ-साथ एप्लिकेशन नियंत्रण के लिए लोकप्रिय था। कई Amiga अनुप्रयोगों में एक Aरेक्स पोर्ट बनाया गया है जो रेक्स से एप्लिकेशन को नियंत्रित करने की अनुमति देता है। कई चल रहे अनुप्रयोगों को नियंत्रित करने के लिए एक एकल रेक्स स्क्रिप्ट विभिन्न रेक्स बंदरगाहों के बीच भी स्विच कर सकती है।
1990 से वर्तमान
1990 में, SLAC की कैथी डैगर ने पहली स्वतंत्र रेक्स संगोष्ठी का आयोजन किया, जिसके कारण रेक्स भाषा एसोसिएशन का गठन हुआ। संगोष्ठी प्रतिवर्ष आयोजित की जाती हैं।
रेक्स के कई फ्रीवेयर संस्करण उपलब्ध हैं। 1992 में, दो सबसे व्यापक रूप से उपयोग किए जाने वाले ओपन-सोर्स सॉफ़्टवेयर | ओपन-सोर्स पोर्ट दिखाई दिए: यूनिक्स के लिए इयान कोलियर का रेक्स/imc और एंडर्स क्रिस्टेंसन का रेजिना[1](बाद में मार्क हेस्लिंग द्वारा अपनाया गया) विंडोज और यूनिक्स के लिए। Bरेक्स WinCE और पॉकेट पीसी प्लेटफॉर्म के लिए अच्छी तरह से जाना जाता है, और इसे VM/370 और MVS में बैक-पोर्ट किया गया है।
OS/2 में Watcom VX-रेक्स का विजुअल डेवलपमेंट सिस्टम है। हॉकवेयर की एक अन्य बोली विज़प्रो रेक्स थी।
किलोवाट द्वारा पोर्टेबल रेक्स और Quercus द्वारा व्यक्तिगत रेक्स दो रेक्स इंटरप्रेटर हैं जिन्हें DOS के लिए डिज़ाइन किया गया है और कमांड प्रॉम्प्ट का उपयोग करके विंडोज के तहत भी चलाया जा सकता है। 1990 के दशक के मध्य से, रेक्स के दो नए संस्करण सामने आए हैं:
- Netरेक्स: जावा स्रोत कोड के माध्यम से जावा (प्रोग्रामिंग भाषा) बाइट कोड को संकलित करता है; इसमें कोई भी आरक्षित कीवर्ड नहीं है, और जावा ऑब्जेक्ट मॉडल का उपयोग करता है, और इसलिए आमतौर पर 'क्लासिक' रेक्स के साथ ऊपर-संगत नहीं होता है।
- ऑब्जेक्ट रेक्स: रेक्स का एक वस्तु के उन्मुख आम तौर पर ऊपर की ओर-संगत संस्करण।
1996 में American National Standards Institute (ANSI) ने रेक्स के लिए एक मानक प्रकाशित किया: ANSI X3.274–1996 सूचना प्रौद्योगिकी - प्रोग्रामिंग भाषा रेक्स।[13] 1985 से रेक्स पर दो दर्जन से अधिक पुस्तकें प्रकाशित हो चुकी हैं।
रेक्स ने 20 मार्च 2004 को अपनी 25वीं वर्षगांठ मनाई, जिसे मई 2004 में जर्मनी के बॉबलिंगेन में रेक्स भाषा एसोसिएशन के 15वें अंतर्राष्ट्रीय रेक्स संगोष्ठी में मनाया गया।
12 अक्टूबर 2004 को, आईबीएम ने सामान्य सार्वजनिक लाइसेंस के तहत अपने ऑब्जेक्ट रेक्स कार्यान्वयन के स्रोतों को जारी करने की अपनी योजना की घोषणा की। ऑब्जेक्ट रेक्स के हाल के रिलीज़ में रेक्स भाषा के इस संस्करण को लागू करने वाला ActiveX विंडोज विंडोज स्क्रिप्टिंग होस्टWSH) स्क्रिप्टिंग इंजन शामिल है।
22 फरवरी, 2005 को ओपन ऑब्जेक्ट रेक्स (ooरेक्स) की पहली सार्वजनिक रिलीज की घोषणा की गई। इस उत्पाद में एक WSH स्क्रिप्टिंग इंजन है जो विंडोज ऑपरेटिंग सिस्टम और रेक्स के साथ एप्लिकेशन को उसी तरह से प्रोग्रामिंग करने की अनुमति देता है जिसमें Visual Basic और JScript को डिफ़ॉल्ट WSH इंस्टॉलेशन और पर्ल, Tcl, Python (प्रोग्रामिंग भाषा) थर्ड-पार्टी द्वारा लागू किया जाता है। स्क्रिप्टिंग इंजन।
As of January 2017[update] रेक्स को TIOBE इंडेक्स में शीर्ष 100 में शामिल पचास भाषाओं में से एक के रूप में सूचीबद्ध किया गया था जो शीर्ष 50 से संबंधित नहीं थी।[14] 2019 में, 30वीं रेक्स भाषा एसोसिएशन सिम्पोजियम ने रेक्स की 40वीं वर्षगांठ मनाई। संगोष्ठी हर्सले, इंग्लैंड में आयोजित की गई थी, जहां रेक्स को पहली बार डिजाइन और कार्यान्वित किया गया था।[15]
टूलकिट
रेक्स/Tk, ग्राफिक्स के लिए एक टूलकिट है जिसका उपयोग रेक्स प्रोग्राम्स में Tcl/Tk के रूप में व्यापक रूप से उपलब्ध है।
विंडोज के लिए एक रेक्स IDE, RxxxEd विकसित किया गया है।[11] नेटवर्क संचार के साथ-साथ रेजिना रेक्स के अन्य ऐड-ऑन और कार्यान्वयन के लिए RxSock विकसित किया गया है, और विंडोज कमांड लाइन के लिए एक रेक्स दुभाषिया विंडोज के विभिन्न संस्करणों के लिए अधिकांश संसाधन किटों में आपूर्ति की जाती है और उन सभी के साथ-साथ काम करती है करने योग्य।
वर्तनी और पूंजीकरण
मूल रूप से भाषा को Rex (Reformed Executor) कहा जाता था; अतिरिक्त X को अन्य उत्पादों के नामों के साथ टकराव से बचने के लिए जोड़ा गया था। REX मूल रूप से सभी अपरकेस था क्योंकि मेनफ्रेम कोड अपरकेस ओरिएंटेड था। उन दिनों की शैली में ऑल-कैप नाम होना था, आंशिक रूप से क्योंकि लगभग सभी कोड अभी भी ऑल-कैप थे। उत्पाद के लिए यह रेक्स बन गया, और माइक काउलीशॉ की पुस्तक के दोनों संस्करण ऑल-कैप का उपयोग करते हैं। 1984 में सिस्टम उत्पाद के लिए रीस्ट्रक्चर्ड एक्सटेंडेड एक्ज़ीक्यूटर के विस्तार का उपयोग किया गया था।[8]
सिंटेक्स
This section is written like a manual or guidebook. (December 2012) (Learn how and when to remove this template message) |
लूपिंग
रेक्स में लूप कंट्रोल स्ट्रक्चर a से शुरू होता है DO और एक के साथ समाप्त होता है END लेकिन कई किस्मों में आता है। Netरेक्स कीवर्ड का उपयोग करता है LOOP के बजाय DO लूपिंग के लिए, जबकि ooरेक्स व्यवहार करता है LOOP तथा DO लूपिंग करते समय समकक्ष के रूप में।
सशर्त पाश
रेक्स किसी स्थिति का परीक्षण करने से पहले (do while) या के बाद (do until) निर्देशों की सूची निष्पादित की जाती है:
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
जबकि [हालत] [निर्देश] समाप्त
</वाक्यविन्यास हाइलाइट>
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
[शर्त] तक करो [निर्देश] समाप्त
</वाक्यविन्यास हाइलाइट>
दोहराए जाने वाले लूप्स
अधिकांश भाषाओं की तरह, रेक्स एक इंडेक्स वेरिएबल को बढ़ाते समय लूप कर सकता है और एक सीमा तक पहुंचने पर रुक सकता है:
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
अनुक्रमणिका करें = प्रारंभ [सीमित करने के लिए] [वृद्धि द्वारा] [गिनती के लिए] [निर्देश] समाप्त
</वाक्यविन्यास हाइलाइट>
वेतन वृद्धि को छोड़ा जा सकता है और 1 के लिए डिफॉल्ट किया जा सकता है। सीमा को भी छोड़ा जा सकता है, जिससे लूप हमेशा के लिए जारी रहता है।
रेक्स गिने हुए लूप की अनुमति देता है, जहां लूप की शुरुआत में एक एक्सप्रेशन की गणना की जाती है और लूप के भीतर के निर्देशों को कई बार निष्पादित किया जाता है: <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
अभिव्यक्ति करो [निर्देश] समाप्त
</वाक्यविन्यास हाइलाइट>
कार्यक्रम समाप्त होने तक रेक्स भी लूप कर सकता है:
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
हमेशा के लिए करो [निर्देश] समाप्त
</वाक्यविन्यास हाइलाइट>
के साथ एक प्रोग्राम वर्तमान लूप से बाहर हो सकता है leave निर्देश, जो a से बाहर निकलने का सामान्य तरीका है do forever लूप, या इसके साथ शॉर्ट-सर्किट कर सकते हैं iterate निर्देश।
संयुक्त लूप्स
PL/I की तरह, रेक्स सशर्त और दोहराए जाने वाले दोनों तत्वों को एक ही लूप में संयोजित करने की अनुमति देता है:[16] <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
अनुक्रमणिका करें = प्रारंभ [सीमित करने के लिए] [वृद्धि द्वारा] [गिनती के लिए] [जबकि स्थिति] [निर्देश] समाप्त
</वाक्यविन्यास हाइलाइट> <वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
अभिव्यक्ति करो [शर्त तक] [निर्देश] समाप्त
</वाक्यविन्यास हाइलाइट>
सशर्त
के साथ परीक्षण की स्थिति IF:
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
अगर [शर्त] तो करना [निर्देश] समाप्त वरना करना [निर्देश] समाप्त
</वाक्यविन्यास हाइलाइट> ELSE ई> खंड वैकल्पिक है।
एकल निर्देशों के लिए, DO तथा END छोड़ा भी जा सकता है:
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
अगर [शर्त] तो [निर्देश] वरना [निर्देश]
</वाक्यविन्यास हाइलाइट>
इंडेंटेशन वैकल्पिक है, लेकिन यह पठनीयता में सुधार करने में मदद करता है।
कई स्थितियों के लिए परीक्षण
SELECT रेक्स का स्विच स्टेटमेंट है, जैसे PL/I से प्राप्त कई अन्य निर्माण। CASE के कुछ कार्यान्वयनों की तरह अन्य गतिशील भाषाओं में निर्माण होता है, रेक्स's WHEN खंड पूरी शर्तें निर्दिष्ट करते हैं, जो एक दूसरे से संबंधित होने की आवश्यकता नहीं है। उसमें, वे अधिक के कैस्केड सेट की तरह हैं IF-THEN-ELSEIF-THEN-...-ELSE कोड की तुलना में वे सी या जावा की तरह हैं switch बयान।
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
चुनते हैं जब [हालत] तब [निर्देश] या एनओपी जब [हालत] तब करना [निर्देश] या एनओपी समाप्त अन्यथा [निर्देश] या एनओपी समाप्त
</वाक्यविन्यास हाइलाइट> NOP e> निर्देश कोई ऑपरेशन नहीं करता है, और इसका उपयोग तब किया जाता है जब प्रोग्रामर कुछ भी नहीं करना चाहता है जहां एक या अधिक निर्देशों की आवश्यकता होती है।
अन्यथा खंड वैकल्पिक है। यदि छोड़ दिया जाता है और कोई WHEN शर्तें पूरी नहीं होती हैं, तो SYNTAX की स्थिति बढ़ जाती है।
सरल चर
रेक्स में वेरिएबल्स टाइपलेस हैं, और शुरुआत में अपर केस में उनके नाम के रूप में मूल्यांकन किया जाता है। इस प्रकार कार्यक्रम में इसके उपयोग के साथ एक चर का प्रकार भिन्न हो सकता है:
<वाक्यविन्यास लैंग = रेक्स>
नमस्ते कहो /* => नमस्कार */ नमस्ते = 25 नमस्ते कहो /* => 25 */ हैलो = 5 + 3 कहो हैलो कहें /* => कहें 5 + 3 */ व्याख्या हैलो /* => 8 */ ड्रॉप हैलो नमस्ते कहो /* => नमस्कार */
</वाक्यविन्यास हाइलाइट>
यौगिक चर
कई अन्य प्रोग्रामिंग भाषाओं के विपरीत, क्लासिक रेक्स के पास संख्यात्मक सूचकांक द्वारा संबोधित चर के सरणियों के लिए कोई प्रत्यक्ष समर्थन नहीं है। इसके बजाय यह यौगिक चर प्रदान करता है।[17] एक मिश्रित चर में एक तना होता है जिसके बाद एक पूंछ होती है। ए । (डॉट) का उपयोग तने को पूंछ से जोड़ने के लिए किया जाता है। यदि उपयोग की जाने वाली पूंछ संख्यात्मक हैं, तो सरणी के समान प्रभाव उत्पन्न करना आसान है।
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
क्या मैं = 1 से 10 स्टेम.आई = 10 - आई समाप्त
</वाक्यविन्यास हाइलाइट>
बाद में निम्न मान वाले निम्न चर उपस्थित हैं: stem.1 = 9, stem.2 = 8, stem.3 = 7...
सरणियों के विपरीत, स्टेम चर के सूचकांक के लिए पूर्णांक मान होना आवश्यक नहीं है। उदाहरण के लिए, निम्न कोड मान्य है:
<वाक्यविन्यास लैंग = रेक्स>
मैं = 'सोमवार' स्टेम.आई = 2
</वाक्यविन्यास हाइलाइट>
रेक्स में स्टेम के लिए डिफ़ॉल्ट मान सेट करना भी संभव है।
<वाक्यविन्यास लैंग = रेक्स>
तना। = 'अज्ञात' स्टेम.1 = 'यूएसए' स्टेम.44 = 'यूके' स्टेम.33 = 'फ्रांस'
</वाक्यविन्यास हाइलाइट>
इन कार्यों के बाद कार्यकाल stem.3 उत्पादन करेगा 'Unknown'.
DROP स्टेटमेंट से पूरे तने को भी मिटाया जा सकता है।
<वाक्यविन्यास लैंग = रेक्स>
ड्रॉप तना।
</वाक्यविन्यास हाइलाइट>
यह पहले से सेट किए गए किसी भी डिफ़ॉल्ट मान को हटाने का प्रभाव भी रखता है।
सम्मेलन द्वारा (और भाषा के हिस्से के रूप में नहीं) यौगिक stem.0 अक्सर एक स्टेम में कितने आइटम हैं इसका ट्रैक रखने के लिए प्रयोग किया जाता है, उदाहरण के लिए सूची में एक शब्द जोड़ने की प्रक्रिया को इस तरह कोडित किया जा सकता है:
<वाक्यविन्यास लैंग = रेक्स>
add_word: प्रक्रिया शब्दकोश को उजागर करती है। पार्स आर्ग डब्ल्यू एन = शब्दकोश.0 + 1 डिक्शनरी.एन = डब्ल्यू शब्दकोश.0 = एन वापसी
</वाक्यविन्यास हाइलाइट>
मिश्रित चर के पुच्छ में अनेक तत्वों का होना भी संभव है। उदाहरण के लिए:
<वाक्यविन्यास लैंग = रेक्स>
एम = 'जुलाई' डी = 15 वाई = 2005 day.y.m.d = 'शुक्रवार'
</वाक्यविन्यास हाइलाइट>
बहु-आयामी सरणी के प्रभाव को प्रदान करने के लिए एकाधिक संख्यात्मक पूंछ तत्वों का उपयोग किया जा सकता है।
रेक्स यौगिक चर के समान सुविधाएँ कई अन्य भाषाओं में पाई जाती हैं (AWK प्रोग्रामिंग भाषा में साहचर्य सरणियों सहित, पर्ल में हैश टेबल और जावा (प्रोग्रामिंग भाषा) में हैशटेबल्स)। इनमें से अधिकतर भाषाएं इस तरह के निर्माण के सभी चाबियों (या रेक्स शर्तों में पूंछ) पर पुनरावृति करने के लिए एक निर्देश प्रदान करती हैं, लेकिन क्लासिक रेक्स में इसकी कमी है। इसके बजाय पूंछ मूल्यों की सहायक सूचियों को उपयुक्त रखना आवश्यक है। उदाहरण के लिए, किसी प्रोग्राम में शब्दों की गिनती करने के लिए किसी शब्द की प्रत्येक घटना को रिकॉर्ड करने के लिए निम्नलिखित प्रक्रिया का उपयोग किया जा सकता है।
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
add_word: प्रक्रिया एक्सपोज़ गिनती। शब्द सूची पार्स आर्ग डब्ल्यू। काउंट.डब्ल्यू = काउंट.डब्ल्यू + 1 /* काउंट मान लें। 0 */ पर सेट किया गया है अगर गिनती.w = 1 तो word_list = word_list w वापसी
</वाक्यविन्यास हाइलाइट>
और फिर बाद में:
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
क्या मैं = 1 शब्दों के लिए (word_list) डब्ल्यू = शब्द (शब्द_सूची, मैं) डब्ल्यू काउंट डब्ल्यू कहें समाप्त
</वाक्यविन्यास हाइलाइट>
कुछ स्पष्टता की कीमत पर इन तकनीकों को एक ही तने में संयोजित करना संभव है:
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
add_word: प्रक्रिया शब्दकोश को उजागर करती है। पार्स आर्ग डब्ल्यू। डिक्शनरी.डब्ल्यू = डिक्शनरी.डब्ल्यू + 1 अगर Dictionary.w = 1 /* डिक्शनरी मान लें। = 0 */ फिर करो एन = शब्दकोश.0 + 1 डिक्शनरी.एन = डब्ल्यू शब्दकोश.0 = एन समाप्त वापसी
</वाक्यविन्यास हाइलाइट>
और बाद में:
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
do i = 1 to dictionary.0 डब्ल्यू = डिक्शनरी.आई कहो मैं w dictionary.w समाप्त
</वाक्यविन्यास हाइलाइट>
रेक्स यहां कोई सुरक्षा जाल प्रदान नहीं करता है, इसलिए यदि कोई एक शब्द पूर्ण संख्या से कम होता है dictionary.0 यह तकनीक रहस्यमय तरीके से विफल हो जाएगी।
IBM के ऑब्जेक्ट रेक्स सहित रेक्स के हाल के कार्यान्वयन और ooरेक्स जैसे ओपन सोर्स कार्यान्वयन में स्टेम के मान पर पुनरावृत्ति को सरल बनाने के लिए एक नई भाषा का निर्माण शामिल है, या किसी अन्य संग्रह वस्तु जैसे कि सरणी, तालिका या सूची पर।
<वाक्यविन्यास हाइलाइट लैंग = ooरेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
क्या मैं तने के ऊपर हूं। कहो मैं '-->' स्टेम.आई समाप्त
</वाक्यविन्यास हाइलाइट>
कीवर्ड निर्देश
==== पार्स ==== PARSE ई> निर्देश विशेष रूप से शक्तिशाली है; यह कुछ उपयोगी स्ट्रिंग-हैंडलिंग फ़ंक्शंस को जोड़ती है। इसका सिंटैक्स है:
<वाक्यविन्यास लैंग = रेक्स>
पार्स [ऊपरी] मूल [टेम्पलेट]
</वाक्यविन्यास हाइलाइट>
जहां मूल स्रोत निर्दिष्ट करता है:
arg(तर्क, कमांड लाइन के शीर्ष स्तर की पूंछ पर)linein(मानक इनपुट, जैसे कीबोर्ड)pull(रेक्स डेटा कतार या मानक इनपुट)source(कार्यक्रम को कैसे क्रियान्वित किया गया, इसकी जानकारी)value(एक अभिव्यक्ति)with: कीवर्डwithयह इंगित करना आवश्यक है कि अभिव्यक्ति कहाँ समाप्त होती हैvar(एक परिवर्तनीय)version(संस्करण/रिलीज़ नंबर)
और टेम्पलेट हो सकता है:
- चर की सूची
- स्तंभ संख्या सीमांकक
- शाब्दिक सीमांकक
upper वैकल्पिक है; यदि निर्दिष्ट किया गया है, तो पार्स करने से पहले डेटा अपर केस में परिवर्तित हो जाएगा।
उदाहरण:
टेम्पलेट के रूप में चरों की सूची का उपयोग करना
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
myVar = जॉन स्मिथ पार्स var myVar firstName lastName पहला नाम है: पहला नाम कहें अंतिम नाम है: lastName
</वाक्यविन्यास हाइलाइट>
निम्नलिखित प्रदर्शित करता है:
<पूर्व>
पहला नाम है: जॉन अंतिम नाम है: स्मिथ
</पूर्व>
टेम्पलेट के रूप में सीमांकक का उपयोग करना:
<वाक्यविन्यास लैंग = रेक्स>
myVar = स्मिथ, जॉन पार्स var myVar LastName , FirstName पहला नाम है: पहला नाम कहें अंतिम नाम है: lastName
</वाक्यविन्यास हाइलाइट>
निम्नलिखित भी प्रदर्शित करता है:
<पूर्व>
पहला नाम है: जॉन अंतिम नाम है: स्मिथ
</पूर्व>
स्तंभ संख्या सीमांकक का उपयोग करना:
<वाक्यविन्यास लैंग = रेक्स>
मायवर = (202) 123-1234 पार्स var MyVar 2 एरियाकोड 5 7 सबनंबर कहते हैं एरिया कोड है: एरियाकोड कहें सब्सक्राइबर नंबर है: सबनंबर
</वाक्यविन्यास हाइलाइट>
निम्नलिखित प्रदर्शित करता है:
<पूर्व>
क्षेत्र कोड है: 202 सब्सक्राइबर संख्या है: 123-1234
</पूर्व>
एक टेम्पलेट चर, शाब्दिक सीमांकक और स्तंभ संख्या सीमांकक के संयोजन का उपयोग कर सकता है।
व्याख्या
INTERPRET निर्देश अपने तर्क का मूल्यांकन करता है और इसके मान को रेक्स कथन के रूप में मानता है। कभी-कभी INTERPRET किसी कार्य को करने का सबसे स्पष्ट तरीका है, लेकिन इसका उपयोग अक्सर वहाँ किया जाता है जहाँ स्पष्ट कोड का उपयोग करना संभव होता है, जैसे, value().
INTERPRET के अन्य उपयोग रेक्स's (दशमलव) मनमाने ढंग से सटीक अंकगणित (फ़ज़ी तुलनाओं सहित), प्रोग्रामेटिक टेम्प्लेट, स्टेम्ड एरेज़ और विरल सरणियों के साथ PARSE स्टेटमेंट का उपयोग हैं।[how?] <वाक्यविन्यास लैंग = रेक्स>
/* वर्ग(4) के साथ व्याख्या प्रदर्शित करें => 16 */ एक्स = 'वर्ग' व्याख्या 'कहो' एक्स || '(4); बाहर निकलना' स्क्वायर: वापसी तर्क (1) ** 2
</वाक्यविन्यास हाइलाइट>
यह 16 प्रदर्शित करता है और बाहर निकलता है। क्योंकि रेक्स में चर सामग्री स्ट्रिंग्स हैं, जिसमें एक्सपोनेंट और यहां तक कि पूरे प्रोग्राम के साथ परिमेय संख्याएं शामिल हैं, रेक्स स्ट्रिंग्स को मूल्यांकन किए गए भावों के रूप में व्याख्या करने की पेशकश करता है।
इस सुविधा का उपयोग फ़ंक्शन मापदंडों के रूप में कार्यों को पारित करने के लिए किया जा सकता है, जैसे कि इंटीग्रल की गणना करने के लिए SIN या COS को एक प्रक्रिया में पास करना।
रेक्स ABS, DIGITS, MAX, MIN, SIGN, RANDOM जैसे केवल बुनियादी गणित कार्यों और बिट संचालन के साथ हेक्स प्लस बाइनरी रूपांतरणों का एक पूरा सेट प्रदान करता है। एसआईएन जैसे अधिक जटिल कार्यों को खरोंच से लागू किया गया था या तीसरे पक्ष के बाहरी पुस्तकालय (कंप्यूटिंग) से प्राप्त किया गया था। कुछ बाहरी पुस्तकालय, विशेष रूप से पारंपरिक भाषाओं में लागू किए गए, विस्तारित परिशुद्धता का समर्थन नहीं करते थे।
बाद के संस्करण (गैर-क्लासिक) समर्थन करते हैं CALL variable निर्माण। साथ में बिल्ट-इन फ़ंक्शन VALUE, CALL के कई मामलों के स्थान पर उपयोग किया जा सकता है INTERPRET. यह एक क्लासिक प्रोग्राम है:
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
/ * इनपुट निकास या इसी तरह से समाप्त * / हमेशा के लिए करो; लाइनिन की व्याख्या करें (); समाप्त
</वाक्यविन्यास हाइलाइट>
थोड़ा और परिष्कृत रेक्स कैलकुलेटर:
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
एक्स = 'छोड़ने के लिए अलविदा इनपुट' X = 'BYE' तक करें; व्याख्या 'कहो' एक्स; एक्स खींचो; समाप्त
</वाक्यविन्यास हाइलाइट>
PULL के लिए आशुलिपि है parse upper pull. वैसे ही, ARG के लिए आशुलिपि है parse upper arg.
INTERPRET निर्देश की शक्ति के अन्य उपयोग थे। वेलोर (सॉफ्टवेयर) पैकेज वस्तु उन्मुख कार्यकर्म वातावरण को लागू करने के लिए रेक्स की व्याख्यात्मक क्षमता पर निर्भर था। टाइम मशीन नामक एक अप्रकाशित वेस्टिंगहाउस इलेक्ट्रिक (1886) उत्पाद में एक अन्य उपयोग पाया गया जो एक घातक त्रुटि के बाद पूरी तरह से ठीक होने में सक्षम था।
संख्यात्मक
<वाक्यविन्यास लैंग = रेक्स>
अंक कहें () फ़ज़ () फॉर्म () /* => 9 0 वैज्ञानिक */ कहें 999999999+1 /* => 1.000000000E+9 */ संख्यात्मक अंक 10 /* केवल उपलब्ध स्मृति द्वारा सीमित */ कहें 999999999+1 /* => 1000000000 */
कहें 0.9999999999=1 /* => 0 (गलत) */ संख्यात्मक फ़ज़ 3 कहें 0.99999999=1 /* => 1 (सच) */ कहते हैं 0.99999999==1 /* => 0 (गलत) */
कहें 100*123456789 /* => 1.23456789E+10 */ संख्यात्मक रूप इंजीनियरिंग कहें 100*123456789 /* => 12.34567890E+9 */
कहें 53 // 7 /* => 4 (शेष विभाजन)*/ </वाक्यविन्यास हाइलाइट>
| Calculates √2 | Calculates e | |
|---|---|---|
| code | numeric digits 50
n=2
r=1
do forever /* Newton's method */
rr=(n/r+r)/2
if r=rr then leave
r=rr
end
say "sqrt" n ' = ' r
|
numeric digits 50
e=2.5
f=0.5
do n=3
f=f/n
ee=e+f
if e=ee then leave
e=ee
end
say "e =" e
|
| output | sqrt 2 = 1.414213562373095048801688724209698078569671875377 | e = 2.7182818284590452353602874713526624977572470936998 |
संकेत
सिग्नल निर्देश नियंत्रण के प्रवाह में असामान्य परिवर्तन के लिए अभिप्रेत है (अगला खंड देखें)। हालाँकि, इसका दुरुपयोग किया जा सकता है और अन्य भाषाओं में पाए जाने वाले GOTO स्टेटमेंट की तरह व्यवहार किया जा सकता है (हालाँकि यह सख्ती से समतुल्य नहीं है, क्योंकि यह लूप और अन्य निर्माणों को समाप्त करता है)। यह पढ़ने में मुश्किल कोड उत्पन्न कर सकता है।
त्रुटि से निपटने और अपवाद
रेक्स में SIGNAL निर्देश का उपयोग करके त्रुटियों और अन्य अपवादों को रोकना और उनसे निपटना संभव है। सात सिस्टम कंडीशन हैं: एरर, फेल्योर, हॉल्ट, नोवैल्यू, नोट्रेडी, लॉस्टडिजिट्स और सिंटेक्स। स्रोत कोड में वांछित के रूप में प्रत्येक की हैंडलिंग को चालू और बंद किया जा सकता है।
उपयोगकर्ता द्वारा समाप्त किए जाने तक निम्न प्रोग्राम चलेगा:
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
रुकने का संकेत; ए = 1 करो
ए कहो 100000 /* देरी से करें */ समाप्त
समाप्त पड़ाव: कार्यक्रम उपयोगकर्ता द्वारा बंद कर दिया गया था बाहर निकलना
</वाक्यविन्यास हाइलाइट>
A signal on novalue कथन अपरिभाषित चरों के उपयोग को रोकता है, जो अन्यथा उनके मूल्य के रूप में अपना (अपर केस) नाम प्राप्त करेंगे। राज्य की परवाह किए बिना NOVALUE हालत, एक चर की स्थिति हमेशा अंतर्निहित फ़ंक्शन के साथ जांची जा सकती है SYMBOL परिभाषित चरों के लिए VAR लौटाना। VALUE e> फ़ंक्शन का उपयोग a को ट्रिगर किए बिना वेरिएबल्स का मान प्राप्त करने के लिए किया जा सकता है NOVALUE हालत, लेकिन इसका मुख्य उद्देश्य POSIX के समान env (शेल) चर को पढ़ना और सेट करना है getenv तथा putenv.
शर्तें
ERROR- सिस्टम कमांड से सकारात्मक आरसी
FAILURE- सिस्टम कमांड के लिए नेगेटिव आरसी (जैसे कमांड उपस्थित नहीं है)
HALT- असामान्य समाप्ति
NOVALUE- एक अनसेट चर का संदर्भ दिया गया था
NOTREADY- इनपुट या आउटपुट त्रुटि (उदाहरण फ़ाइल के अंत से परे पढ़ने के प्रयास)
SYNTAX- अमान्य प्रोग्राम सिंटैक्स, या कुछ अन्य त्रुटि स्थिति
LOSTDIGITS- महत्वपूर्ण अंक खो गए हैं (एएनएसआई रेक्स, टीआरएल दूसरे संस्करण में नहीं)
जब किसी शर्त को संभाला जाता है SIGNAL ON, द SIGL तथा RC स्थिति को समझने के लिए सिस्टम चर का विश्लेषण किया जा सकता है। आरसी में रेक्स त्रुटि कोड होता है और एसआईजीएल में वह पंक्ति संख्या होती है जहां त्रुटि उत्पन्न हुई थी।
रेक्स संस्करण 4 के साथ शुरू होने वाली स्थितियों को नाम मिल सकते हैं, और एक भी है CALL ON निर्माण। यह आसान है अगर बाहरी कार्य जरूरी नहीं हैं:
<वाक्यविन्यास लैंग = रेक्स>
ChangeCodePage: कार्यविधि /* SIGNAL सेटिंग सुरक्षित करें */ सिंटैक्स नाम ChangeCodePage.Trap पर संकेत वापसी SysQueryProcessCodePage () ChangeCodePage.Trap: OS/2 पर 1004 /* विंडोज-1252 लौटाएं */
</वाक्यविन्यास हाइलाइट>
यह भी देखें
- आईएसपीएफ
- एक्सईडीआईटी
- कंप्यूटर गोले की तुलना
- प्रोग्रामिंग भाषाओं की तुलना
टिप्पणियाँ
- ↑ The TSO EXEC command with an unqualified dataset name and neither the CLIST nor EXEC option examines the low level qualifier or EXEC.
- ↑ If the first line of a script fetched from SYSPROC is a comment containing REXX then it is treated as REXX rather than CLIST. A script fetched from SYSEXEC must be REXX.
संदर्भ
- ↑ 1.0 1.1 Mark Hessling (October 25, 2012). "Regina Rexx Interpreter". SourceForge project regina-rexx. Retrieved 2014-02-10.
- ↑ 2.0 2.1 2.2 M. F. Cowlishaw. "IBM REXX संक्षिप्त इतिहास". IBM. Retrieved 2006-08-15.
- ↑ 3.0 3.1 Melinda Varian. "REXX संगोष्ठी, मई 1995".
- ↑ "सभी दस्तावेज़ों की सूची (फ़िल्टर=rexx)". IBM library server. 2005. Retrieved 2014-02-10.
- ↑ "क्या ArcaOS में REXX सपोर्ट शामिल है?". Retrieved 2020-09-03.
- ↑ EXEC 2 संदर्भ (PDF) (Second ed.). International Business Machines Corporation. April 1982. p. 92. SC24-5219-1.
- ↑ IBM वर्चुअल मशीन सुविधा /370: EXEC उपयोगकर्ता गाइड (PDF) (Second ed.). International Business Machines Corporation. April 1975. GC20-1812-1.
- ↑ 8.0 8.1 M. F. Cowlishaw (1984). "REXX भाषा का डिज़ाइन" (PDF). IBM Systems Journal (PDF). IBM Research. 23 (4): 333. doi:10.1147/sj.234.0326. Retrieved 2014-01-23.
क्या नई विशेषता से जुड़ा कोई उच्च आश्चर्यजनक कारक हो सकता है? यदि कोई सुविधा उपयोगकर्ता द्वारा गलती से गलत तरीके से लागू की जाती है और उसके कारण अप्रत्याशित परिणाम दिखाई देता है, तो उस सुविधा में एक उच्च विस्मयकारी कारक होता है और इसलिए अवांछनीय है। यदि एक आवश्यक विशेषता में एक उच्च विस्मयकारी कारक है, तो सुविधा को फिर से डिज़ाइन करना आवश्यक हो सकता है।
- ↑ M. F. Cowlishaw (1981-02-18). "REX - एक कमांड प्रोग्रामिंग लैंग्वेज". SHARE. Retrieved 2006-08-15.
- ↑ Lundin, Leigh; Woodruff, Mark (1987-04-23). "T/REXX, CMS के लिए एक REXX कंपाइलर". U.S. Copyright Office. Washington, DC: Independent Intelligence Incorporated (TXu000295377).
- ↑ 11.0 11.1 Howard Fosdick (2005). Rexx प्रोग्रामर का संदर्भ. Wiley Publishing. p. 390. ISBN 0-7645-7996-7.
- ↑ "रेक्स कार्यान्वयन". RexxLA. Archived from the original on 2006-09-24. Retrieved 2006-08-15.
- ↑ While ANSI INCITS 274-1996/AMD1-2000 (R2001) and ANSI INCITS 274-1996 (R2007) are chargeable, a free draft can be downloaded: "American National Standard for Information Systems – Programming Language REXX" (PDF). X3J18-199X.
- ↑ "अगली 50 प्रोग्रामिंग भाषाएँ". TIOBE index. tiobe.com. 2017. Archived from the original on 2017-01-19. Retrieved 2017-01-10.
- ↑ "RexxLA - संगोष्ठी अनुसूची".
- ↑ M. F. Cowlishaw (1990). द रेक्स लैंग्वेज - ए प्रैक्टिकल एप्रोच टू प्रोग्रामिंग (2nd ed.). Prentice Hall. ISBN 0-13-780651-5.
- ↑ "Rexx के लिए अंगूठे के छह नियम".
अग्रिम पठन
- Callaway, Merrill. The ARexx Cookbook: A Tutorial Guide to the ARexx Language on the Commodore Amiga Personal Computer. Whitestone, 1992. ISBN 978-0963277305.
- Callaway, Merrill. The Rexx Cookbook: A Tutorial Guide to the Rexx Language in OS/2 & Warp on the IBM Personal Computer. Whitestone, 1995. ISBN 0-9632773-4-0.
- Cowlishaw, Michael. The Rexx Language: A Practical Approach to Programming. Prentice Hall, 1990. ISBN 0-13-780651-5.
- Cowlishaw, Michael. The NetRexx Language. Prentice Hall, 1997. ISBN 0-13-806332-X.
- Daney, Charles. Programming in REXX. McGraw-Hill, TX, 1990. ISBN 0-07-015305-1.
- Ender, Tom. Object-Oriented Programming With Rexx. John Wiley & Sons, 1997. ISBN 0-471-11844-3.
- Fosdick, Howard. Rexx Programmer's Reference. Wiley/Wrox, 2005. ISBN 0-7645-7996-7.
- Gargiulo, Gabriel. REXX with OS/2, TSO, & CMS Features. MVS Training, 1999 (third edition 2004). ISBN 1-892559-03-X.
- Goldberg, Gabriel and Smith, Philip H. The Rexx Handbook . McGraw-Hill, TX, 1992. ISBN 0-07-023682-8.
- Goran, Richard K. REXX Reference Summary Handbook. CFS Nevada, Inc.,1997. ISBN 0-9639854-3-4.
- IBM Redbooks. Implementing Rexx Support in Sdsf. Vervante, 2007. ISBN 0-7384-8914-X.
- Kiesel, Peter C. Rexx: Advanced Techniques for Programmers. McGraw-Hill, TX, 1992. ISBN 0-07-034600-3.
- Marco, Lou ISPF/REXX Development for Experienced Programmers. CBM Books, 1995. ISBN 1-878956-50-7
- O'Hara, Robert P. and Gomberg, David Roos. Modern Programming Using Rexx. Prentice Hall, 1988. ISBN 0-13-597329-5.
- Rudd, Anthony S. 'Practical Usage of TSO REXX'. CreateSpace, 2012. ISBN 978-1475097559.
- Schindler, William. Down to Earth Rexx. Perfect Niche Software, 2000. ISBN 0-9677590-0-5.