Various Phases of a Compiler | कंपाइलर के विभिन्न चरण और उनका कार्य (With Diagram & Examples)


कंपाइलर के विभिन्न चरण (Phases of a Compiler)

कंपाइलर एक जटिल सॉफ्टवेयर सिस्टम है जो किसी उच्च स्तरीय प्रोग्रामिंग भाषा (High-Level Language) में लिखे गए सोर्स कोड को मशीन कोड में बदलता है। यह परिवर्तन कई चरणों (Phases) के माध्यम से किया जाता है, और प्रत्येक चरण का अपना विशेष कार्य होता है। सभी चरण मिलकर कंपाइलर की पूरी प्रक्रिया को संरचित और कुशल बनाते हैं।

📘 कंपाइलर के मुख्य चरण (Major Phases of a Compiler)

कंपाइलर को सामान्यतः छह मुख्य चरणों में बाँटा जाता है:

  1. Lexical Analysis (लेक्सिकल विश्लेषण)
  2. Syntax Analysis (वाक्यविन्यास विश्लेषण)
  3. Semantic Analysis (अर्थ विश्लेषण)
  4. Intermediate Code Generation (मध्यवर्ती कोड निर्माण)
  5. Code Optimization (कोड अनुकूलन)
  6. Code Generation (कोड निर्माण)

📊 कंपाइलर के चरणों का आरेख (Diagram of Compiler Phases)

Source Code
     ↓
Lexical Analysis
     ↓
Syntax Analysis
     ↓
Semantic Analysis
     ↓
Intermediate Code Generation
     ↓
Code Optimization
     ↓
Code Generation
     ↓
Target Machine Code

🧠 1️⃣ Lexical Analysis (लेक्सिकल विश्लेषण)

यह कंपाइलर का पहला चरण है जिसमें सोर्स कोड को छोटे-छोटे शब्दों या प्रतीकों में तोड़ा जाता है जिन्हें Tokens कहा जाता है। यह कार्य Lexical Analyzer द्वारा किया जाता है।

कार्य:

  • 🔹 सोर्स कोड से Keywords, Identifiers, Operators, Literals, और Punctuations निकालना।
  • 🔹 Unnecessary spaces और comments हटाना।

उदाहरण:

Input: a = b + 5;
Output Tokens: [id, '=', id, '+', num, ';']

🧩 2️⃣ Syntax Analysis (वाक्यविन्यास विश्लेषण)

इस चरण में कंपाइलर यह जांचता है कि Tokens का क्रम (sequence) भाषा के Grammar नियमों के अनुसार है या नहीं। यह कार्य Parser द्वारा किया जाता है जो एक Parse Tree बनाता है।

उदाहरण:

Expression: a = b + c * d
Parse Tree:
        =
      /   
     a     +
          / 
         b   *
            / 
           c   d

📗 3️⃣ Semantic Analysis (अर्थ विश्लेषण)

यह चरण वाक्य के अर्थ की जाँच करता है। Syntax सही होने पर भी यदि वेरिएबल्स का उपयोग गलत प्रकार से हुआ है, तो यह चरण त्रुटि देता है। उदाहरण — यदि integer वेरिएबल को string से जोड़ने की कोशिश की जाए।

कार्य:

  • Type Checking
  • Variable Scope Validation
  • Symbol Table Access

⚙️ 4️⃣ Intermediate Code Generation (मध्यवर्ती कोड निर्माण)

इस चरण में कंपाइलर एक Intermediate Representation (IR) बनाता है जो Source Language और Machine Language दोनों से स्वतंत्र होती है। यह कोड Optimization और Portability में मदद करता है।

उदाहरण:

a = b + c * d
IR:
t1 = c * d
t2 = b + t1
a = t2

🚀 5️⃣ Code Optimization (कोड अनुकूलन)

Optimization का उद्देश्य है कोड को तेज़, कुशल और मेमोरी फ्रेंडली बनाना। यह चरण प्रोग्राम के लॉजिक को बदले बिना उसकी कार्यक्षमता (efficiency) बढ़ाता है।

उदाहरण:

t1 = c * 2
t2 = c * 2 + 0   →  Simplified to  t2 = c * 2

🧩 6️⃣ Code Generation (कोड निर्माण)

यह कंपाइलर का अंतिम चरण है जिसमें Intermediate Code को Target Machine Code में बदला जाता है। यह चरण रजिस्टर एलोकेशन, एड्रेस असाइनमेंट, और instruction selection के लिए जिम्मेदार होता है।

उदाहरण:

MOV R1, C
MUL R1, D
ADD R2, B, R1
MOV A, R2

💾 7️⃣ Linking & Loading (लिंकिंग और लोडिंग)

यह चरण Object Code को Executable File में बदलता है और उसे Memory में लोड करता है ताकि प्रोग्राम रन हो सके।

🌍 2025 में आधुनिक कंपाइलरों के चरण:

  • 🔹 LLVM आधारित मॉड्यूलर फेज़ेस।
  • 🔹 AI-driven Code Optimization।
  • 🔹 Cloud और WebAssembly आधारित Compilation।

📙 निष्कर्ष:

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

Related Post