पहचानकर्ता (कंप्यूटर भाषाएं): Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Lexical token that names a programming language's entities}} {{refimprove|date=September 2019}} {{missing information|Unicode character and UAX31 recommend...")
 
No edit summary
 
(8 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Short description|Lexical token that names a programming language's entities}}
{{Short description|Lexical token that names a programming language's entities}}
{{refimprove|date=September 2019}}
कंप्यूटर [[प्रोग्रामिंग भाषा]]ओं में, पहचानकर्ता एक लेक्सिकल टोकन है, जो प्रोग्रामिंग भाषा की इकाइयों का नामकरण करता है। कुछ प्रकार की इकाइयों को एक पहचानकर्ता निरूपित कर सकता है जिसमें चर, डेटा प्रकार,[[लेबल (कंप्यूटर विज्ञान)|लेबल]], [[सबरूटीन]] और [[मॉड्यूलर प्रोग्रामिंग|मॉड्यूलर]] सम्मिलित हैं।
{{missing information|Unicode character and UAX31 recommendation|date=March 2021}}
कंप्यूटर [[प्रोग्रामिंग भाषा]]ओं में, एक पहचानकर्ता एक लेक्सिकल विश्लेषण # टोकन है (जिसे [[प्रतीक]] भी कहा जाता है, लेकिन [[प्रतीक (प्रोग्रामिंग)]] के साथ भ्रमित नहीं होना चाहिए) जो भाषा की संस्थाओं का नाम देता है। कुछ प्रकार की संस्थाओं को एक पहचानकर्ता निरूपित कर सकता है जिसमें वेरिएबल (कंप्यूटर विज्ञान), [[डेटा प्रकार]], [[लेबल (कंप्यूटर विज्ञान)]], [[सबरूटीन]]्स और [[मॉड्यूलर प्रोग्रामिंग]] शामिल हैं।


== शाब्दिक रूप ==
== शाब्दिक रूप ==
कौन से वर्ण अनुक्रम पहचानकर्ता का गठन करते हैं, यह भाषा के [[शाब्दिक व्याकरण]] पर निर्भर करता है। एक सामान्य नियम [[अक्षरांकीय]] अनुक्रम है, अंडरस्कोर की भी अनुमति है (कुछ भाषाओं में, _ की अनुमति नहीं है), और इस शर्त के साथ कि यह एक संख्यात्मक अंक से शुरू नहीं हो सकता है ([[पूर्णांक शाब्दिक]] के साथ भ्रमित होने से बचने के द्वारा लेक्सिकल विश्लेषण को सरल बनाने के लिए) - तो <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]] और कुछ ALGOL संस्करण - उदाहरण के लिए, निम्नलिखित एक मान्य कथन है: <code>'''real''' half pi;</code> जिसे के रूप में दर्ज किया जा सकता है <code>.real. half pi;</code> (कीवर्ड बोल्डफेस में दर्शाए गए हैं, विशेष रूप से स्ट्रॉपिंग (वाक्यविन्यास) के माध्यम से)। ALGOL में यह संभव था क्योंकि खोजशब्दों को वाक्यात्मक रूप से विभेदित किया जाता है, इसलिए टकराव या अस्पष्टता का कोई खतरा नहीं है, रेखा पुनर्निर्माण चरण के दौरान रिक्त स्थान समाप्त हो जाते हैं, और स्रोत को [[स्कैनर रहित पार्सिंग]] के माध्यम से संसाधित किया गया था, इसलिए लेक्सिंग संदर्भ-संवेदनशील हो सकता है।
कौन से वर्ण अनुक्रम पहचानकर्ता का गठन करते हैं, यह भाषा के [[शाब्दिक व्याकरण|शब्दकोषीय व्याकरण]] पर निर्भर करता है। एक सामान्य नियम [[अक्षरांकीय]] अनुक्रम है,जो अधोयोजक( _ ) के प्रयोगों की भी अनुमति देता है जबकि कुछ भाषाओं में इसके प्रयोग की अनुमति नहीं है और इस प्रतिबंध के साथ कि यह एक संख्यात्मक अंक से प्रारंभ नहीं हो सकता है [[पूर्णांक शाब्दिक|पूर्णांक शब्दरूपों]] के साथ भ्रमित होने से बचने के लिए और शब्दकोशों को सरल बनाने के लिए - <code>foo, foo1, foo_bar, _foo</code> के प्रयोग की अनुमति है, परंतु <code>1foo</code> '''-''' नहीं है यह [[सी (प्रोग्रामिंग भाषा)|सी]] और [[सी ++]], [[पायथन (प्रोग्रामिंग भाषा)|पायथन]], और कई अन्य भाषाओं के पुराने संस्करणों में उपयोग की जाने वाली परिभाषा है। इन भाषाओं के बाद के संस्करण, कई अन्य आधुनिक भाषाओं के साथ, पहचानकर्ता में कई और [[यूनिकोड]] वर्णों का समर्थन करते हैं। यद्यपि एक सामान्य प्रतिबंध खाली स्थान के वर्णों और भाषा संचालकों को अनुमति नहीं देना है; यह टोकनाइजेशन को [[मुक्त रूप भाषा]] और [[संदर्भ मुक्त व्याकरण]], विषय से मुक्त बनाकर सरल करता है। उदाहरण के लिए, बाइनरी ऑपरेशन के रूप में इसके उपयोग के कारण पहचानकर्ताओं में + को मना करने का अर्थ है कि a+b और a + b को समान रूप से टोकन दिया जा सकता है, जबकि यदि इसकी अनुमति दी गई थी, तो a+b एक पहचानकर्ता होगा तथा जोड़ नहीं होगा। पहचानकर्ता में रिक्त स्थान विशेष रूप से समस्याग्रस्त है, जैसे कि पहचानकर्ताओं में रिक्त स्थान की अनुमति है, फिर एक खंड जैसे <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> if क्लॉज के लिए अक्सर एक कीवर्ड होता है, लेकिन लेक्सिक रूप से उसी रूप में होता है <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>  
प्रोग्रामिंग भाषाओं के कार्यान्वयन के लिए जो एक [[संकलन समय]] उपयोग कर रहे हैं, पहचानकर्ता अक्सर केवल समय संस्थाओं को संकलित करते हैं। यही है, रन टाइम (प्रोग्राम लाइफसाइकिल चरण) पर संकलित प्रोग्राम में पाठ्य पहचानकर्ता टोकन के बजाय स्मृति पतों और ऑफ़सेट के संदर्भ होते हैं (ये स्मृति पते, या ऑफ़सेट, प्रत्येक पहचानकर्ता को [[संकलक]] द्वारा निर्दिष्ट किए जाते हैं)।


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


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


गो जैसी कुछ भाषाओं में, पहचानकर्ताओं की विशिष्टता उनकी वर्तनी और उनकी दृश्यता पर आधारित होती है।<ref>{{cite web|url=http://golang.org/ref/spec#Declarations_and_scope |title=The Go Programming Language Specification - The Go Programming Language |publisher=Golang.org |date=2013-05-08 |access-date=2013-06-05}}</ref>
कंपाइलर और दुभाषिए सामान्यतः उपयोग किए गए वास्तविक वर्ण अनुक्रम के आधार पर पहचानकर्ता को कोई अर्थपूर्ण अर्थ नहीं देते हैं। यद्यपि कुछ अपवाद भी हैं। उदाहरण के लिए:
[[HTML]] में एक पहचानकर्ता एक HTML तत्व की संभावित HTML विशेषता में से एक है। यह दस्तावेज़ के भीतर अद्वितीय है।
* [[पर्ल]] में एक चर को [[सिगिल (कंप्यूटर प्रोग्रामिंग)|सिगिल]] नामक उपसर्ग का उपयोग करके चिन्हित किया जाता है, जो [[अभिव्यक्ति (प्रोग्रामिंग)|व्यंजकों]] में चर राशि की व्याख्या के पहलुओं को निर्दिष्ट करता है।
* [[रूबी प्रोग्रामिंग भाषा]] में एक चर राशि को स्वचालित रूप से [[अपरिवर्तनीय वस्तु]] माना जाता है यदि उसका पहचानकर्ता बड़े अक्षर से प्रारंभ होता है।
* [[फोरट्रान]] में, एक चर के नाम का पहला अक्षर इंगित करता है कि क्या प्रारम्भिक रूप से इसे [[पूर्णांक]] या [[तैरनेवाला स्थल|अस्थिर बिन्दु]] चर के रूप में निर्मित किया गया है।
* गो [[जाओ (प्रोग्रामिंग भाषा)|प्रोग्रामिंग भाषा]] में, चर के नाम के पहले अक्षर का कैपिटल वर्णीकरण इसकी दृश्यता सार्वजनिक के लिए अपरकेस, निजी के लिए लोअरकेस निर्धारित करता है।
 
गो जैसी कुछ भाषाओं में, पहचानकर्ताओं की विशिष्टता उनकी वर्तनी और उनकी दृश्यता पर आधारित होती है। HTML में एक पहचानकर्ता एक HTML तत्व की संभावित HTML विशेषता में से एक है। यह फाइलों के भीतर अद्वितीय है।


==संदर्भ==
==संदर्भ==
Line 31: Line 29:
* नामकरण परंपरा (प्रोग्रामिंग)
* नामकरण परंपरा (प्रोग्रामिंग)


श्रेणी:पहचानकर्ता
श्रेणी:प्रोग्रामिंग भाषा अवधारणाएँ
श्रेणी:मेटाडाटा
श्रेणी:सिंटैक्टिक संस्थाएं
[[Category: Machine Translated Page]]
[[Category:Created On 17/02/2023]]
[[Category:Created On 17/02/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Short description with empty Wikidata description]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]

Latest revision as of 11:09, 10 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]

प्रोग्रामिंग भाषाओं के कार्यान्वयन के लिए जो एक कम्पाइलर उपयोग कर रहे हैं, पहचानकर्ता प्रायः समय इकाइयों को संकलित करते हैं। यह रन टाइम पर संकलित प्रोग्राम में पाठ्य पहचानकर्ता टोकन के अतिरिक्त स्मृति पतों और ऑफ़सेट के संदर्भ होते हैं ये स्मृति पते, या ऑफ़सेट, प्रत्येक पहचानकर्ता को संकलक द्वारा निर्दिष्ट किए जाते हैं।

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

कंपाइलर और दुभाषिए सामान्यतः उपयोग किए गए वास्तविक वर्ण अनुक्रम के आधार पर पहचानकर्ता को कोई अर्थपूर्ण अर्थ नहीं देते हैं। यद्यपि कुछ अपवाद भी हैं। उदाहरण के लिए:

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

गो जैसी कुछ भाषाओं में, पहचानकर्ताओं की विशिष्टता उनकी वर्तनी और उनकी दृश्यता पर आधारित होती है। HTML में एक पहचानकर्ता एक HTML तत्व की संभावित HTML विशेषता में से एक है। यह फाइलों के भीतर अद्वितीय है।

संदर्भ

  1. Malik, D. (2014). C++ programming : from problem analysis to program design (7th ed.). Cengage Learning. p. 397. ISBN 978-1-285-85274-4.


यह भी देखें

  • नामकरण परंपरा (प्रोग्रामिंग)