पहचानकर्ता (कंप्यूटर भाषाएं): Difference between revisions
Line 3: | Line 3: | ||
== शाब्दिक रूप == | == शाब्दिक रूप == | ||
कौन से वर्ण अनुक्रम पहचानकर्ता का गठन करते हैं, यह भाषा के [[शाब्दिक व्याकरण]] पर निर्भर करता है। एक सामान्य नियम [[अक्षरांकीय]] अनुक्रम है,जो अधोयोजक की भी अनुमति देता है कुछ भाषाओं में,अनुमति नहीं देता है और इस प्रतिबंध के साथ कि यह एक संख्यात्मक अंक | कौन से वर्ण अनुक्रम पहचानकर्ता का गठन करते हैं, यह भाषा के [[शाब्दिक व्याकरण]] पर निर्भर करता है। एक सामान्य नियम [[अक्षरांकीय]] अनुक्रम है,जो अधोयोजक की भी अनुमति देता है कुछ भाषाओं में,अनुमति नहीं देता है और इस प्रतिबंध के साथ कि यह एक संख्यात्मक अंक सेप्रारंभ नहीं हो सकता है [[पूर्णांक शाब्दिक]] के साथ भ्रमित होने से बचने के लिए शिथिलन विश्लेषण को सरल बनाने के लिए - <code>foo, foo1, foo_bar, _foo</code> की अनुमति है, लेकिन <code>1foo</code> नहीं है - यह [[सी (प्रोग्रामिंग भाषा)]] और [[सी ++]], [[पायथन (प्रोग्रामिंग भाषा)]], और कई अन्य भाषाओं के पुराने संस्करणों में उपयोग की जाने वाली परिभाषा है। इन भाषाओं के बाद के संस्करण, कई अन्य आधुनिक भाषाओं के साथ, पहचानकर्ता में कई और [[यूनिकोड]] वर्णों का समर्थन करते हैं। यद्यपि एक सामान्य प्रतिबंध व्हाट्सएप वर्णों और भाषा संचालकों को अनुमति नहीं देना है; यह टोकननाइजेशन को [[मुक्त रूप भाषा]],मुक्त -फॉर्म और [[संदर्भ मुक्त व्याकरण]], कॉन्टेक्स्ट-मुक्त बनाकर सरल करता है। उदाहरण के लिए, मना करना <code>+</code> बाइनरी ऑपरेशन के रूप में इसके उपयोग के कारण पहचानकर्ताओं में इसका अर्थ है <code>a+b</code> और <code>a + b</code> उसी को टोकन किया जा सकता है, जबकि अगर इसकी अनुमति थी, <code>a+b</code> एक पहचानकर्ता होगा, अतिरिक्त नहीं। पहचानकर्ता में व्हाइटस्पेस विशेष रूप से समस्याग्रस्त है, जैसे कि पहचानकर्ताओं में रिक्त स्थान की अनुमति है, फिर एक खंड जैसे <code>if rainy day then 1</code> कानूनी है, के साथ <code>rainy day</code> एक पहचानकर्ता के रूप में, लेकिन इसे टोकन देने के लिए if क्लॉज की स्थिति में होने के वाक्यांश संबंधी संदर्भ की आवश्यकता होती है। यद्यपि कुछ भाषाएँ पहचानकर्ताओं में रिक्त स्थान की अनुमति देती हैं, जैसे कि [[ALGOL 68|अल्गोल 68]] और कुछ अल्गोल संस्करण - उदाहरण के लिए, निम्नलिखित एक मान्य कथन है: जिसे <code>'''real''' half pi;</code>के रूप में दर्ज किया जा सकता है <code>.real. half pi;</code> कीवर्ड बोल्डफेस में दर्शाए गए हैं, विशेष रूप से वाक्यविन्यास के माध्यम से। अल्गोल में यह संभव था क्योंकि खोजशब्दों को वाक्यात्मक रूप से विभेदित किया जाता है, इसलिए टकराव या अस्पष्टता का कोई खतरा नहीं है, रेखा पुनर्निर्माण चरण के दौरान रिक्त स्थान समाप्त हो जाते हैं, और स्रोत को [[स्कैनर रहित पार्सिंग]] के माध्यम से संसाधित किया गया था, इसलिए शिथिलन संदर्भ-संवेदनशील हो सकता है। | ||
अधिकांश भाषाओं में, कुछ वर्ण अनुक्रमों में पहचानकर्ता का शाब्दिक रूप होता है लेकिन उन्हें [[कीवर्ड (कंप्यूटर प्रोग्रामिंग)|कीवर्ड कंप्यूटर प्रोग्रामिंग]] के रूप में जाना जाता है - उदाहरण के लिए, <code>if</code> क्लॉज के लिए अक्सर एक कीवर्ड होता है, लेकिन लेक्सिक रूप से उसी रूप में होता है <code>ig</code> या <code>foo</code> अर्थात् अक्षरों का एक क्रम होता है इस ओवरलैप को विभिन्न तरीकों से नियंत्रित किया जा सकता है: इन्हें पहचानकर्ता होने से प्रतिबंधित किया जा सकता है - जो टोकननाइज़ेशन और पार्सिंग को सरल करता है - जिस स्थिति में वे आरक्षित शब्द हैं; उन दोनों को अनुमति दी जा सकती है लेकिन अन्य तरीकों से अलग किया जा सकता है, जैसे कि स्ट्रॉपिंग के माध्यम से या खोजशब्द अनुक्रमों को पहचानकर्ता के रूप में अनुमति दी जा सकती है और किस अर्थ को संदर्भ से निर्धारित किया जाता है, जिसके लिए संदर्भ-संवेदनशील लेक्सर की आवश्यकता होती है। गैर-कीवर्ड भी आरक्षित शब्द हो सकते हैं विशेष रूप से आगे की अनुकूलता के लिए, यदि कोई शब्द भविष्य में एक कीवर्ड बन सकता है। कुछ भाषाओं में, जैसे, PL/1, भेद स्पष्ट नहीं है। | अधिकांश भाषाओं में, कुछ वर्ण अनुक्रमों में पहचानकर्ता का शाब्दिक रूप होता है लेकिन उन्हें [[कीवर्ड (कंप्यूटर प्रोग्रामिंग)|कीवर्ड कंप्यूटर प्रोग्रामिंग]] के रूप में जाना जाता है - उदाहरण के लिए, <code>if</code> क्लॉज के लिए अक्सर एक कीवर्ड होता है, लेकिन लेक्सिक रूप से उसी रूप में होता है <code>ig</code> या <code>foo</code> अर्थात् अक्षरों का एक क्रम होता है इस ओवरलैप को विभिन्न तरीकों से नियंत्रित किया जा सकता है: इन्हें पहचानकर्ता होने से प्रतिबंधित किया जा सकता है - जो टोकननाइज़ेशन और पार्सिंग को सरल करता है - जिस स्थिति में वे आरक्षित शब्द हैं; उन दोनों को अनुमति दी जा सकती है लेकिन अन्य तरीकों से अलग किया जा सकता है, जैसे कि स्ट्रॉपिंग के माध्यम से या खोजशब्द अनुक्रमों को पहचानकर्ता के रूप में अनुमति दी जा सकती है और किस अर्थ को संदर्भ से निर्धारित किया जाता है, जिसके लिए संदर्भ-संवेदनशील लेक्सर की आवश्यकता होती है। गैर-कीवर्ड भी आरक्षित शब्द हो सकते हैं विशेष रूप से आगे की अनुकूलता के लिए, यदि कोई शब्द भविष्य में एक कीवर्ड बन सकता है। कुछ भाषाओं में, जैसे, PL/1, भेद स्पष्ट नहीं है। | ||
== शब्दार्थ == | == शब्दार्थ == | ||
एक पहचानकर्ता के कार्यक्रम के भीतर दायरा, या अभिगम्यता या तो स्थानीय या वैश्विक हो सकती है। एक वैश्विक पहचानकर्ता कार्यों के बाहर घोषित किया जाता है और पूरे कार्यक्रम में उपलब्ध होता है। एक स्थानीय पहचानकर्ता को एक विशिष्ट कार्य के भीतर घोषित किया जाता है और केवल उस कार्य के भीतर ही उपलब्ध होता है।<ref>{{cite book|last1=Malik|first1=D.|title=C++ programming : from problem analysis to program design|date=2014|publisher=Cengage Learning|isbn=978-1-285-85274-4|page=397|edition=7th}}</ref> | एक पहचानकर्ता के कार्यक्रम के भीतर दायरा, या अभिगम्यता या तो स्थानीय या वैश्विक हो सकती है। एक वैश्विक पहचानकर्ता कार्यों के बाहर घोषित किया जाता है और पूरे कार्यक्रम में उपलब्ध होता है। एक स्थानीय पहचानकर्ता को एक विशिष्ट कार्य के भीतर घोषित किया जाता है और केवल उस कार्य के भीतर ही उपलब्ध होता है।<ref>{{cite book|last1=Malik|first1=D.|title=C++ programming : from problem analysis to program design|date=2014|publisher=Cengage Learning|isbn=978-1-285-85274-4|page=397|edition=7th}}</ref> प्रोग्रामिंग भाषाओं के कार्यान्वयन के लिए जो एक [[संकलन समय]] उपयोग कर रहे हैं, पहचानकर्ता प्रायः समय संस्थाओं को संकलित करते हैं। यह रन टाइम पर संकलित प्रोग्राम में पाठ्य पहचानकर्ता टोकन के अतिरिक्त स्मृति पतों और ऑफ़सेट के संदर्भ होते हैं ये स्मृति पते, या ऑफ़सेट, प्रत्येक पहचानकर्ता को [[संकलक]] द्वारा निर्दिष्ट किए जाते हैं। | ||
प्रोग्रामिंग भाषाओं के कार्यान्वयन के लिए जो एक [[संकलन समय]] उपयोग कर रहे हैं, पहचानकर्ता | |||
[[प्रतिबिंब (कंप्यूटर प्रोग्रामिंग)]] का समर्थन करने वाली भाषाओं में, जैसे स्रोत कोड के इंटरैक्टिव मूल्यांकन | [[प्रतिबिंब (कंप्यूटर प्रोग्रामिंग)|प्रतिबिंब कंप्यूटर प्रोग्रामिंग]] का समर्थन करने वाली भाषाओं में, जैसे स्रोत कोड के इंटरैक्टिव मूल्यांकन एक दुभाषिया या वृद्धिशील कंपाइलर का उपयोग करके, पहचानकर्ता भी रनटाइम इकाइयां हैं, कभी-कभी [[प्रथम श्रेणी की वस्तु]]ओं के रूप में भी जिन्हें स्वतंत्र रूप से अदल बदल कर मूल्यांकन किया जा सकता है। [[लिस्प (प्रोग्रामिंग भाषा)|लिस्प प्रोग्रामिंग भाषा]] में इन्हें सिंबल कहा जाता है। | ||
कंपाइलर और दुभाषिए | कंपाइलर और दुभाषिए सामान्यतः पर उपयोग किए गए वास्तविक वर्ण अनुक्रम के आधार पर पहचानकर्ता को कोई अर्थपूर्ण अर्थ नहीं देते हैं। यद्यपि अपवाद हैं। उदाहरण के लिए: | ||
* [[पर्ल]] में एक वेरिएबल को [[सिगिल (कंप्यूटर प्रोग्रामिंग)]] नामक उपसर्ग का उपयोग करके | * [[पर्ल]] में एक वेरिएबल को [[सिगिल (कंप्यूटर प्रोग्रामिंग)]] नामक उपसर्ग का उपयोग करके संकेत किया जाता है, जो [[अभिव्यक्ति (प्रोग्रामिंग)]] में चर राशि की व्याख्या के पहलुओं को निर्दिष्ट करता है। | ||
* [[रूबी प्रोग्रामिंग भाषा]] में एक | * [[रूबी प्रोग्रामिंग भाषा]] में एक चर राशि को स्वचालित रूप से [[अपरिवर्तनीय वस्तु]] माना जाता है यदि उसका पहचानकर्ता बड़े अक्षर से प्रारंभ होता है। | ||
* [[फोरट्रान]] में, एक चर के नाम का पहला अक्षर इंगित करता है कि क्या डिफ़ॉल्ट रूप से इसे [[पूर्णांक]] या [[तैरनेवाला स्थल]] चर के रूप में बनाया गया है। | * [[फोरट्रान]] में, एक चर के नाम का पहला अक्षर इंगित करता है कि क्या डिफ़ॉल्ट रूप से इसे [[पूर्णांक]] या [[तैरनेवाला स्थल]] चर के रूप में बनाया गया है। | ||
* [[जाओ (प्रोग्रामिंग भाषा)]] में, एक चर के नाम के पहले अक्षर का | * जाओ [[जाओ (प्रोग्रामिंग भाषा)|प्रोग्रामिंग भाषा]] में, एक चर के नाम के पहले अक्षर का कैपिटल वर्णीकरण इसकी दृश्यता सार्वजनिक के लिए अपरकेस, निजी के लिए लोअरकेस निर्धारित करता है। | ||
go जैसी कुछ भाषाओं में, पहचानकर्ताओं की विशिष्टता उनकी वर्तनी और उनकी दृश्यता पर आधारित होती है। HTML में एक पहचानकर्ता एक HTML तत्व की संभावित HTML विशेषता में से एक है। यह दस्तावेज़ के भीतर अद्वितीय है। | |||
==संदर्भ== | ==संदर्भ== |
Revision as of 08:20, 2 March 2023
कंप्यूटर प्रोग्रामिंग भाषाओं में, एक पहचानकर्ता एक लेक्सिकल विश्लेषण टोकन है, जो भाषा की संस्थाओं का नाम देता है। कुछ प्रकार की संस्थाओं को एक पहचानकर्ता निरूपित कर सकता है कुछ प्रकार की संस्थाओं को एक पहचानकर्ता निरूपित कर सकता है जिसमें चर, डेटा प्रकार,लेबल (कंप्यूटर विज्ञान), सबरूटीन और मॉड्यूलर सम्मिलित हैं।
शाब्दिक रूप
कौन से वर्ण अनुक्रम पहचानकर्ता का गठन करते हैं, यह भाषा के शाब्दिक व्याकरण पर निर्भर करता है। एक सामान्य नियम अक्षरांकीय अनुक्रम है,जो अधोयोजक की भी अनुमति देता है कुछ भाषाओं में,अनुमति नहीं देता है और इस प्रतिबंध के साथ कि यह एक संख्यात्मक अंक सेप्रारंभ नहीं हो सकता है पूर्णांक शाब्दिक के साथ भ्रमित होने से बचने के लिए शिथिलन विश्लेषण को सरल बनाने के लिए - foo, foo1, foo_bar, _foo
की अनुमति है, लेकिन 1foo
नहीं है - यह सी (प्रोग्रामिंग भाषा) और सी ++, पायथन (प्रोग्रामिंग भाषा), और कई अन्य भाषाओं के पुराने संस्करणों में उपयोग की जाने वाली परिभाषा है। इन भाषाओं के बाद के संस्करण, कई अन्य आधुनिक भाषाओं के साथ, पहचानकर्ता में कई और यूनिकोड वर्णों का समर्थन करते हैं। यद्यपि एक सामान्य प्रतिबंध व्हाट्सएप वर्णों और भाषा संचालकों को अनुमति नहीं देना है; यह टोकननाइजेशन को मुक्त रूप भाषा,मुक्त -फॉर्म और संदर्भ मुक्त व्याकरण, कॉन्टेक्स्ट-मुक्त बनाकर सरल करता है। उदाहरण के लिए, मना करना +
बाइनरी ऑपरेशन के रूप में इसके उपयोग के कारण पहचानकर्ताओं में इसका अर्थ है a+b
और a + b
उसी को टोकन किया जा सकता है, जबकि अगर इसकी अनुमति थी, a+b
एक पहचानकर्ता होगा, अतिरिक्त नहीं। पहचानकर्ता में व्हाइटस्पेस विशेष रूप से समस्याग्रस्त है, जैसे कि पहचानकर्ताओं में रिक्त स्थान की अनुमति है, फिर एक खंड जैसे if rainy day then 1
कानूनी है, के साथ rainy day
एक पहचानकर्ता के रूप में, लेकिन इसे टोकन देने के लिए if क्लॉज की स्थिति में होने के वाक्यांश संबंधी संदर्भ की आवश्यकता होती है। यद्यपि कुछ भाषाएँ पहचानकर्ताओं में रिक्त स्थान की अनुमति देती हैं, जैसे कि अल्गोल 68 और कुछ अल्गोल संस्करण - उदाहरण के लिए, निम्नलिखित एक मान्य कथन है: जिसे real half pi;
के रूप में दर्ज किया जा सकता है .real. half pi;
कीवर्ड बोल्डफेस में दर्शाए गए हैं, विशेष रूप से वाक्यविन्यास के माध्यम से। अल्गोल में यह संभव था क्योंकि खोजशब्दों को वाक्यात्मक रूप से विभेदित किया जाता है, इसलिए टकराव या अस्पष्टता का कोई खतरा नहीं है, रेखा पुनर्निर्माण चरण के दौरान रिक्त स्थान समाप्त हो जाते हैं, और स्रोत को स्कैनर रहित पार्सिंग के माध्यम से संसाधित किया गया था, इसलिए शिथिलन संदर्भ-संवेदनशील हो सकता है।
अधिकांश भाषाओं में, कुछ वर्ण अनुक्रमों में पहचानकर्ता का शाब्दिक रूप होता है लेकिन उन्हें कीवर्ड कंप्यूटर प्रोग्रामिंग के रूप में जाना जाता है - उदाहरण के लिए, if
क्लॉज के लिए अक्सर एक कीवर्ड होता है, लेकिन लेक्सिक रूप से उसी रूप में होता है ig
या foo
अर्थात् अक्षरों का एक क्रम होता है इस ओवरलैप को विभिन्न तरीकों से नियंत्रित किया जा सकता है: इन्हें पहचानकर्ता होने से प्रतिबंधित किया जा सकता है - जो टोकननाइज़ेशन और पार्सिंग को सरल करता है - जिस स्थिति में वे आरक्षित शब्द हैं; उन दोनों को अनुमति दी जा सकती है लेकिन अन्य तरीकों से अलग किया जा सकता है, जैसे कि स्ट्रॉपिंग के माध्यम से या खोजशब्द अनुक्रमों को पहचानकर्ता के रूप में अनुमति दी जा सकती है और किस अर्थ को संदर्भ से निर्धारित किया जाता है, जिसके लिए संदर्भ-संवेदनशील लेक्सर की आवश्यकता होती है। गैर-कीवर्ड भी आरक्षित शब्द हो सकते हैं विशेष रूप से आगे की अनुकूलता के लिए, यदि कोई शब्द भविष्य में एक कीवर्ड बन सकता है। कुछ भाषाओं में, जैसे, PL/1, भेद स्पष्ट नहीं है।
शब्दार्थ
एक पहचानकर्ता के कार्यक्रम के भीतर दायरा, या अभिगम्यता या तो स्थानीय या वैश्विक हो सकती है। एक वैश्विक पहचानकर्ता कार्यों के बाहर घोषित किया जाता है और पूरे कार्यक्रम में उपलब्ध होता है। एक स्थानीय पहचानकर्ता को एक विशिष्ट कार्य के भीतर घोषित किया जाता है और केवल उस कार्य के भीतर ही उपलब्ध होता है।[1] प्रोग्रामिंग भाषाओं के कार्यान्वयन के लिए जो एक संकलन समय उपयोग कर रहे हैं, पहचानकर्ता प्रायः समय संस्थाओं को संकलित करते हैं। यह रन टाइम पर संकलित प्रोग्राम में पाठ्य पहचानकर्ता टोकन के अतिरिक्त स्मृति पतों और ऑफ़सेट के संदर्भ होते हैं ये स्मृति पते, या ऑफ़सेट, प्रत्येक पहचानकर्ता को संकलक द्वारा निर्दिष्ट किए जाते हैं।
प्रतिबिंब कंप्यूटर प्रोग्रामिंग का समर्थन करने वाली भाषाओं में, जैसे स्रोत कोड के इंटरैक्टिव मूल्यांकन एक दुभाषिया या वृद्धिशील कंपाइलर का उपयोग करके, पहचानकर्ता भी रनटाइम इकाइयां हैं, कभी-कभी प्रथम श्रेणी की वस्तुओं के रूप में भी जिन्हें स्वतंत्र रूप से अदल बदल कर मूल्यांकन किया जा सकता है। लिस्प प्रोग्रामिंग भाषा में इन्हें सिंबल कहा जाता है।
कंपाइलर और दुभाषिए सामान्यतः पर उपयोग किए गए वास्तविक वर्ण अनुक्रम के आधार पर पहचानकर्ता को कोई अर्थपूर्ण अर्थ नहीं देते हैं। यद्यपि अपवाद हैं। उदाहरण के लिए:
- पर्ल में एक वेरिएबल को सिगिल (कंप्यूटर प्रोग्रामिंग) नामक उपसर्ग का उपयोग करके संकेत किया जाता है, जो अभिव्यक्ति (प्रोग्रामिंग) में चर राशि की व्याख्या के पहलुओं को निर्दिष्ट करता है।
- रूबी प्रोग्रामिंग भाषा में एक चर राशि को स्वचालित रूप से अपरिवर्तनीय वस्तु माना जाता है यदि उसका पहचानकर्ता बड़े अक्षर से प्रारंभ होता है।
- फोरट्रान में, एक चर के नाम का पहला अक्षर इंगित करता है कि क्या डिफ़ॉल्ट रूप से इसे पूर्णांक या तैरनेवाला स्थल चर के रूप में बनाया गया है।
- जाओ प्रोग्रामिंग भाषा में, एक चर के नाम के पहले अक्षर का कैपिटल वर्णीकरण इसकी दृश्यता सार्वजनिक के लिए अपरकेस, निजी के लिए लोअरकेस निर्धारित करता है।
go जैसी कुछ भाषाओं में, पहचानकर्ताओं की विशिष्टता उनकी वर्तनी और उनकी दृश्यता पर आधारित होती है। HTML में एक पहचानकर्ता एक HTML तत्व की संभावित HTML विशेषता में से एक है। यह दस्तावेज़ के भीतर अद्वितीय है।
संदर्भ
- ↑ Malik, D. (2014). C++ programming : from problem analysis to program design (7th ed.). Cengage Learning. p. 397. ISBN 978-1-285-85274-4.
यह भी देखें
- नामकरण परंपरा (प्रोग्रामिंग)
श्रेणी:पहचानकर्ता श्रेणी:प्रोग्रामिंग भाषा अवधारणाएँ श्रेणी:मेटाडाटा श्रेणी:सिंटैक्टिक संस्थाएं