सिंटेक्स हाइलाइटिंग

सिंटेक्स हाइलाइटिंग पाठ संपादक्स की एक विशेषता है जो प्रोग्रामिंग भाषा, भाषा का अंकन या पाठ के प्रस्तुतिकरण के लिए प्रयुक्त भाषा लैंग्वेज, जैसे HTML के लिए उपयोग की जाती है। फीचर शब्दों की श्रेणी के अनुसार विभिन्न रंगों और फोंट में टेक्स्ट, विशेष रूप से स्रोत कोड प्रदर्शित करता है। यह सुविधा एक संरचित भाषा जैसे कि प्रोग्रामिंग भाषा या मार्कअप भाषा में लिखने की सुविधा प्रदान करती है क्योंकि संरचना और सिंटैक्स त्रुटियां दोनों दृष्टिगत रूप से भिन्न होती हैं। यह सुविधा कई प्रोग्रामिंग संबंधित संदर्भों (जैसे प्रोग्रामिंग मैनुअल) में भी कार्यरत है, या तो रंगीन किताबों या ऑनलाइन वेबसाइटों के रूप में कोड स्निपेट को पाठकों के लिए आसान बनाने के लिए। हाइलाइटिंग पाठ के अर्थ को ही प्रभावित नहीं करता है; यह केवल मानव पाठकों के लिए अभिप्रेत है।

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

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

सम्मेलन में प्रकाशित एक अध्ययन प्रोग्रामिंग के मनोविज्ञान ने लघु कार्यक्रमों की समझ पर सिंटैक्स हाइलाइटिंग के प्रभावों का मूल्यांकन किया, यह पाया कि सिंटैक्स हाइलाइटिंग की उपस्थिति एक प्रोग्रामर के लिए एक कार्यक्रम के शब्दार्थ को आंतरिक बनाने में लगने वाले समय को काफी कम कर देती है। इसके अतिरिक्त, अध्ययन के दौरान एक आई-ट्रैकर से एकत्र किए गए डेटा ने सुझाव दिया कि सिंटैक्स हाइलाइटिंग प्रोग्रामर को कीवर्ड जैसे मानक सिंटैक्टिक घटकों पर कम ध्यान देने में सक्षम बनाता है।

पाठ संपादकों में समर्थन
कुछ पाठ संपादक रंगीन मार्कअप को ऐसे प्रारूप में भी निर्यात कर सकते हैं जो मुद्रण के लिए या वर्ड-प्रोसेसिंग और अन्य प्रकार के पाठ-स्वरूपण सॉफ़्टवेयर में आयात करने के लिए उपयुक्त है; उदाहरण के लिए HTML के रूप में, इसके सिंटैक्स हाइलाइटिंग के रंगीन LaTeX, परिशिष्ट भाग या रिच टेक्स्ट फ़ॉर्मैट संस्करण। पुस्तकालय (कम्प्यूटिंग) या इंजन को हाइलाइट करने वाले कई सिंटैक्स हैं जिनका उपयोग अन्य अनुप्रयोगों में किया जा सकता है, लेकिन वे अपने आप में पूर्ण प्रोग्राम नहीं हैं, उदाहरण के लिए PHP के लिए जेनेरिक सिंटेक्स हाइलाइटर (GeSHi) एक्सटेंशन।

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

इन मामलों में, यह स्पष्ट नहीं है कि किस भाषा का उपयोग करना है, और दस्तावेज़ को हाइलाइट नहीं किया जा सकता है या गलत तरीके से हाइलाइट किया जा सकता है।

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

सिंटैक्स सजावट कहा जाता है, कुछ संपादक कुछ सिंटैक्टिकल तत्वों को अधिक आकर्षक तरीके से प्रदर्शित करते हैं, उदाहरण के लिए पॉइंटर ऑपरेटर को बदलकर  स्रोत कोड में एक वास्तविक तीर प्रतीक (→) द्वारा, या स्रोत कोड टिप्पणियों में वास्तविक इटैलिक, 'बोल्डफेस', या रेखांकित प्रस्तुति।

उदाहरण
नीचे C (प्रोग्रामिंग भाषा) कोड के एक स्निपेट (प्रोग्रामिंग) की तुलना है:

नीचे सिंटैक्स हाइलाइट किए गए सी ++ कोड का एक और स्निपेट है: <वाक्यविन्यास लैंग = सीपीपी> // विंडो_काउंट विंडो ऑब्जेक्ट बनाएं: कॉन्स्ट ऑटो विंडो_काउंट = इंट{10}; ऑटो विंडोज़ = एसटीडी :: सरणी <एसटीडी :: साझा_पीटीआर <विंडो>, मैक्स_विंडो_काउंट> {}; के लिए (ऑटो i = int{0}; i  ; } 

C++ उदाहरण में, संपादक ने कीवर्ड (कंप्यूटर प्रोग्रामिंग) की पहचान की है,  ,  , और. शुरुआत में टिप्पणी (कंप्यूटर प्रोग्रामिंग) को कार्य कोड से अलग करने के लिए विशिष्ट तरीके से हाइलाइट किया गया है।

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

1982 में, अनीता एच. क्लॉक और जैन बी. चोडक ने पहले ज्ञात सिंटैक्स हाइलाइटिंग सिस्टम के लिए एक पेटेंट दायर किया, जिसका उपयोग 1983 में जारी Intellivision's Entertainment Computer System (ECS) परिधीय में किया गया था। यह बेसिक कार्यक्रमों के विभिन्न तत्वों को उजागर करेगा और शुरुआती लोगों, विशेषकर बच्चों के लिए कोड लिखना शुरू करना आसान बनाने के प्रयास में इसे लागू किया गया था। बाद में, 1985 में ऑक्सफोर्ड इंग्लिश डिक्शनरी के कम्प्यूटरीकरण के लिए VM (ऑपरेटिंग सिस्टम) ऑपरेटिंग सिस्टम के लिए लिखा गया लाइव पार्सिंग एडिटर (LEXX (टेक्स्ट एडिटर)) कलर सिंटैक्स हाइलाइटिंग का उपयोग करने वाले पहले लोगों में से एक था। इसकी लाइव पार्सिंग क्षमता ने उपयोगकर्ता द्वारा आपूर्ति किए गए पार्सर्स को पाठ, प्रोग्राम, डेटा फ़ाइल आदि LEXX (पाठ संपादक) में जोड़ा जा सकता है। माइक्रो कंप्यूटर पर, MacPascal 1.0 (10 अक्टूबर, 1985) ने पास्कल सिंटैक्स को पहचाना क्योंकि यह टाइप किया गया था और मोनोक्रोम कॉम्पैक्ट Macintosh पर सिंटैक्स को हाइलाइट करने के लिए फ़ॉन्ट परिवर्तन (जैसे, बोल्ड के लिए बोल्ड) का उपयोग किया गया था और इसकी संरचना से मेल खाने के लिए स्वचालित रूप से इंडेंट कोड था। कुछ टेक्स्ट एडिटर और कोड फ़ॉर्मेटिंग टूल प्रत्येक संभावित भाषा के लिए एक पार्सर लागू करने के बजाय पैटर्न मिलान heuristics (जैसे नियमित अभिव्यक्ति) का उपयोग करके सिंटैक्स हाइलाइटिंग करते हैं। इसका परिणाम टेक्स्ट रेंडरिंग सिस्टम में कुछ गलत सिंटैक्स हाइलाइटिंग और कुछ मामलों में धीरे-धीरे प्रदर्शन करना हो सकता है। इस समस्या को दूर करने के लिए पाठ संपादकों द्वारा उपयोग किया जाने वाला एक समाधान हमेशा पूरी फ़ाइल को पार्स नहीं कर रहा है, बल्कि केवल दृश्य क्षेत्र है, कभी-कभी पाठ में पीछे की ओर सीमित संख्या में सिंकिंग के लिए स्कैन करना।

दूसरी ओर, संपादक अक्सर इसके निर्माण के दौरान कोड प्रदर्शित करता है, जबकि यह अधूरा या गलत होता है, और सख्त पार्सर (जैसे कि कंपाइलर्स में इस्तेमाल होने वाले) ज्यादातर समय कोड को पार्स करने में विफल होते हैं।

कुछ आधुनिक, भाषा-विशिष्ट एकीकृत विकास वातावरण (पाठ संपादकों के विपरीत) पूर्ण भाषा विश्लेषण करते हैं जिसके परिणामस्वरूप कोड की बहुत सटीक समझ होती है। डेविड नोल्डन द्वारा 2009 में सिमेंटिक हाइलाइटिंग के विस्तार को सिमेंटिक हाइलाइटिंग कहा गया था ओपन-सोर्स C++ IDE KDevelop के लिए। उदाहरण के लिए, सिमेंटिक हाइलाइटिंग कोड की बोधगम्यता को बेहतर बनाने के लिए स्थानीय चरों को विशिष्ट विशिष्ट रंग दे सकती है। 2014 में इवान ब्रूक्स के एक ब्लॉग पोस्ट के कारण रंगीन स्थानीय चर के विचार को और अधिक लोकप्रिय बनाया गया था, और उसके बाद, विचार को विजुअल स्टूडियो जैसे अन्य लोकप्रिय आईडीई में स्थानांतरित कर दिया गया, एक्सकोड, और दूसरे।

यदि उपयोगकर्ता को कुछ हद तक वर्णांधता है तो उपयोगकर्ता इंटरफ़ेस में रंग कम उपयोगी होता है।

यह भी देखें

 * पाठ संपादकों की तुलना # पाठ संपादकों की तुलना में प्रोग्रामिंग सुविधाएँ
 * इंडेंट स्टाइल
 * माध्यमिक संकेतन
 * संरचना संपादक
 * पदच्छेद
 * Solarized (रंग योजना)