Compilers and Interpreters

Let’s Build Programming Language (LBPL) श्रृंखला के दूसरे लेख में आपका स्वागत है। यदि आप श्रृंखला से परिचित नहीं हैं, तो LBPL का उद्देश्य आपको प्रोग्रामिंग भाषा को लागू करने में 0 से 1 तक ले जाना है।
यह लेख संकलक और दुभाषियों की संरचना का एक उच्च स्तरीय अवलोकन देता है।
संकलक क्या है?
कंपाइलर की सबसे सरल परिभाषा एक प्रोग्राम है जो उच्च-स्तरीय प्रोग्रामिंग भाषा (जैसे जावास्क्रिप्ट या जावा) में लिखे गए कोड को कम-स्तरीय कोड (जैसे असेंबली) में सीधे कंप्यूटर या किसी अन्य प्रोग्राम जैसे वर्चुअल मशीन द्वारा निष्पादित किया जाता है।
उदाहरण के लिए, जावा कंपाइलर जावा कोड को जावा बाइटकोड द्वारा जेवीएम (जावा वर्चुअल मशीन) द्वारा निष्पादन योग्य बनाता है। अन्य उदाहरण V8 हैं, Google का जावास्क्रिप्ट इंजन जो जावास्क्रिप्ट कोड को मशीन कोड या GCC में परिवर्तित करता है जो प्रोग्रामिंग भाषाओं में लिखी गई कोड को C, C ++, ऑब्जेक्टिव-सी, गो के रूप में अन्य को देशी मशीन कोड में बदल सकता है।



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

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

Post a Comment

0 Comments