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