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

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

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

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

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

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

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

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

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

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

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

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

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

1982 में, अनीता एच. क्लॉक और जैन बी. चोडक ने पहले ज्ञात सिंटैक्स हाइलाइटिंग प्रणाली के लिए पेटेंट अंकित कराया था, जिसका उपयोग 1983 में जारी इंटेलीविजन एंटरटेनमेंट कंप्यूटर प्रणाली (ईसीएस) परिधीय में किया गया था। यह मूलभूत कार्यक्रमों के विभिन्न तत्वों को प्रकाशित करेगा और प्रारंभिक लोगों, विशेषकर बच्चों के लिए कोड लिखना प्रारंभ करना आसान बनाने के प्रयास में इसे प्रायुक्त किया गया था। बाद में, 1985 में ऑक्सफोर्ड अंग्रेजी शब्दकोष के कम्प्यूटरीकरण के लिए वीएम (ऑपरेटिंग प्रणाली) ऑपरेटिंग प्रणाली के लिए लिखा गया लाइव पदव्याख्या सम्पादक (लेक्स्क्स (पाठ सम्पादक)) रंग सिंटैक्स हाइलाइटिंग का उपयोग करने वाले पहले लोगों में से एक था। इसकी लाइव पदव्याख्या क्षमता ने उपयोगकर्ता द्वारा आपूर्ति किए गए पदव्याख्या को पाठ, प्रोग्राम, डेटा फ़ाइल आदि लेक्स्क्स (पाठ संपादक) में जोड़ा जा सकता है। माइक्रो कंप्यूटर पर, मैकपास्कल 1.0 (10 अक्टूबर, 1985) ने पास्कल सिंटैक्स को पहचाना क्योंकि यह टाइप किया गया था और एकवर्णी सघन मैकिंटोश पर सिंटैक्स को हाइलाइट करने के लिए शब्द परिवर्तन (जैसे, बोल्ड के लिए बोल्ड) का उपयोग किया गया था और इसकी संरचना से मेल खाने के लिए स्वचालित रूप से इंडेंट कोड का उपयोग किया गया था।

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

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

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

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

यह भी देखें

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