एक कंपाइलर एक प्रोग्राम है जो प्रोग्रामिंग लैंग्वेज से दूसरे प्रोग्राम के लिए सोर्स कोड को एक्जीक्यूटेबल कोड में ट्रांसलेट करता है।
स्रोत कोड आम तौर पर एक उच्च-स्तरीय प्रोग्रामिंग भाषा में होता है (जैसे पास्कल, सी, सी ++, जावा, पर्ल, सी #, आदि)। निष्पादन योग्य कोड मशीन निर्देशों का एक अनुक्रम हो सकता है जिसे सीधे सीपीयू द्वारा निष्पादित किया जा सकता है, या यह एक मध्यवर्ती प्रतिनिधित्व हो सकता है जिसे एक वर्चुअल मशीन (जैसे जावा बाइट कोड) द्वारा व्याख्या किया गया है।
संक्षेप में, एक कंपाइलर एक प्रोग्राम को मानव-पठनीय प्रारूप से मशीन-पठनीय प्रारूप में परिवर्तित करता है।
कंपाइलर कैसे काम करता है, यह वास्तव में जटिल है। विषय पर किताबें और विश्वविद्यालय पाठ्यक्रम हैं। मैं प्रक्रिया के मुख्य चरणों को संक्षेप में रेखांकित करने का प्रयास करूंगा, लेकिन यह बहुत सरसरी अवलोकन होगा।
- लेक्सिंग - कार्यक्रम के पाठ को "टोकन" में तोड़ दें। टोकन प्रोग्रामिंग भाषा के "शब्द" हैं, जैसे कि पहचानकर्ता (कीवर्ड, चर नाम, फ़ंक्शन नाम, आदि) या ऑपरेटर (=, *, &, आदि)।
- पार्सिंग - टोकन के अनुक्रम को एक पार्स ट्री में परिवर्तित करें, जो एक डेटा संरचना है जो विभिन्न भाषा निर्माणों का प्रतिनिधित्व करता है: प्रकार की घोषणाएं, चर घोषणाएं, फ़ंक्शन परिभाषाएं, लूप, सशर्तियां, भाव, आदि।
- अनुकूलन - निरंतर अभिव्यक्तियों का मूल्यांकन करें, अप्रयुक्त चर या अगम्य कोड का अनुकूलन करें, यदि संभव हो तो लूप को अनियंत्रित करें, आदि।
- मशीन निर्देश (या JVM बाइट कोड) में पार्स ट्री का अनुवाद करें।
फिर से, मैं इस बात पर जोर देता हूं कि यह बहुत संक्षिप्त विवरण है। आधुनिक कंपाइलर बहुत स्मार्ट हैं, और, परिणामस्वरूप, बहुत जटिल हैं।