Syntax Analysis and Context-Free Grammars (CFGs) | рд╡рд╛рдХреНрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг - Compiler Design Notes 2025

Syntax Analysis and Context-Free Grammars (CFGs) | рд╡рд╛рдХреНрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг - Compiler Design Notes 2025


рд╡рд╛рдХреНрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг (Syntax Analysis and Context-Free Grammars - CFGs)

Syntax Analysis рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рджреВрд╕рд░рд╛ рдкреНрд░рдореБрдЦ рдЪрд░рдг рд╣реИ, рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рд╕рдВрд░рдЪрдирд╛ (structure) рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЪрд░рдг рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╡рд╛рдХреНрдп (statements) рднрд╛рд╖рд╛ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП Context-Free Grammar (CFG) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

ЁЯУШ Syntax Analysis рдХреНрдпрд╛ рд╣реИ?

Syntax Analysis рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рд╣реИ тАФ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдХрд┐ рдЯреЛрдХрдиреНрд╕ рдХрд╛ рдЕрдиреБрдХреНрд░рдо (sequence of tokens) рднрд╛рд╖рд╛ рдХреЗ рд╡реНрдпрд╛рдХрд░рдг (grammar) рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрд╣ рдХрд╛рд░реНрдп Parser рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ Parse Tree рдпрд╛ Syntax Tree рдмрдирд╛рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг:

Input Code:  a = b + c * d;
Tokens: ID = ID + ID * ID

Parser рдЗрд╕реЗ Grammar Rules рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд Parse Tree рдмрдирд╛рддрд╛ рд╣реИ:

        =
      /   
     a     +
          / 
         b   *
            / 
           c   d

ЁЯза Syntax Analysis рдХреЗ рдЙрджреНрджреЗрд╢реНрдп:

  • ЁЯФ╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ред
  • ЁЯФ╣ Grammar рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ parsing рдХрд░рдирд╛ред
  • ЁЯФ╣ Syntax Errors рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ред
  • ЁЯФ╣ Syntax Tree рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЬреЛ рдЕрдЧрд▓реА stages (Semantic Analysis) рдХреЗ рд▓рд┐рдП input рдмрдиреЗред

тЪЩя╕П Syntax Analysis рдХреЗ рдкреНрд░рдХрд╛рд░:

  • Top-Down Parsing: рд░реВрдЯ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░ leaves рддрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдгред
  • Bottom-Up Parsing: Leaves рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░ рд░реВрдЯ рддрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдгред

ЁЯУЧ Context-Free Grammar (CFG) рдХреНрдпрд╛ рд╣реИ?

Context-Free Grammar (CFG) рдПрдХ рдФрдкрдЪрд╛рд░рд┐рдХ рд╡реНрдпрд╛рдХрд░рдг рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рд╡рд╛рдХреНрдп рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рднрд╛рд╖рд╛ рдХреА рд╡реИрдз рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ rule-based рддрд░реАрдХреЗ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд░рддрд╛ рд╣реИред

CFG рдХреА рдкрд░рд┐рднрд╛рд╖рд╛:

CFG рдХреЛ рдЪрд╛рд░ рдШрдЯрдХреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

G = (V, T, P, S)
  • V: Variables (Non-terminals)
  • T: Terminals (Tokens рдпрд╛ Symbols)
  • P: Production Rules
  • S: Start Symbol

рдЙрджрд╛рд╣рд░рдг:

Arithmetic Expression рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ CFG:

E тЖТ E + T | T
T тЖТ T * F | F
F тЖТ (E) | id

рдпрд╣ grammar рдЗрди expressions рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ:

a + b * c
(a + b) * c

ЁЯзй Parse Tree рдХреНрдпрд╛ рд╣реИ?

Parse Tree grammar рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА hierarchical structure рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ non-terminal рдПрдХ subtree рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдФрд░ terminal symbols leaves рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред

ЁЯУК Parse Tree Example:

E
тФЬтФАтФА E
тФВ   тФФтФАтФА id
тФЬтФАтФА +
тФФтФАтФА T
    тФЬтФАтФА T
    тФВ   тФФтФАтФА id
    тФЬтФАтФА *
    тФФтФАтФА F
        тФФтФАтФА id

ЁЯУЪ Derivations in Grammar:

  • Leftmost Derivation: рд╣рд░ рдЪрд░рдг рдореЗрдВ рд╕рдмрд╕реЗ рдмрд╛рдПрдБ non-terminal рдХреЛ expand рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • Rightmost Derivation: рд╣рд░ рдЪрд░рдг рдореЗрдВ рд╕рдмрд╕реЗ рджрд╛рдПрдБ non-terminal рдХреЛ expand рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг:

E тЖТ E + T тЖТ T + T тЖТ F + T тЖТ id + T тЖТ id + F тЖТ id + id

тЪЩя╕П Ambiguity in CFG:

рдпрджрд┐ рдПрдХ string рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ Parse Tree рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ grammar ambiguous рдХрд╣рд▓рд╛рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг:

E тЖТ E + E | E * E | id

тАЬid + id * idтАЭ рдХреЗ рд▓рд┐рдП рджреЛ Parse Trees рд╕рдВрднрд╡ рд╣реИрдВ:

  1. + рдкрд╣рд▓реЗ evaluate рд╣реЛ
  2. * рдкрд╣рд▓реЗ evaluate рд╣реЛ

рдЗрд╕ ambiguity рдХреЛ Operator Precedence Rules рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

ЁЯУШ Syntax Errors:

  • ЁЯФ╣ Missing Semicolon (;)
  • ЁЯФ╣ Mismatched Parentheses ()
  • ЁЯФ╣ Unrecognized tokens

ЁЯзо Error Recovery Techniques:

  • Panic Mode: рдХреБрдЫ symbols рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЖрдЧреЗ рдмрдврд╝рдирд╛ред
  • Phrase-Level Recovery: Missing symbol рдЬреЛрдбрд╝рдирд╛ред
  • Error Productions: Grammar рдореЗрдВ error patterns рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ред
  • Global Correction: рдиреНрдпреВрдирддрдо рд╕рдВрд╢реЛрдзрди рджреНрд╡рд╛рд░рд╛ error рд╕реБрдзрд╛рд░ред

ЁЯЪА рдЖрдзреБрдирд┐рдХ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп (2025 рдореЗрдВ CFGs рдФрд░ Parsing):

  • ЁЯФ╣ LLM (Large Language Models) рдЖрдзрд╛рд░рд┐рдд grammar correctionред
  • ЁЯФ╣ AI-driven Parser Generation Tools рдЬреИрд╕реЗ ANTLR рдФрд░ PEGред
  • ЁЯФ╣ Incremental Parsing IDEs (VS Code, IntelliJ) рдореЗрдВ рдЙрдкрдпреЛрдЧред

ЁЯУЩ рдирд┐рд╖реНрдХрд░реНрд╖:

Syntax Analysis рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рд╕рдВрд░рдЪрдирд╛ рд╕рдордЭрдиреЗ рдФрд░ Syntax Errors рдкрдХрдбрд╝рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪрд░рдг рд╣реИред Context-Free Grammars Compiler рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд╛рд░рднреВрдд рдирд┐рдпрдореЛрдВ рдХрд╛ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред 2025 рдореЗрдВ, AI рдФрд░ ML рдЖрдзрд╛рд░рд┐рдд рдЖрдзреБрдирд┐рдХ Parsers рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдФрд░ рднреА рддреЗрдЬрд╝, рдмреБрджреНрдзрд┐рдорд╛рди рдФрд░ рд╕рдЯреАрдХ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред

Related Articles

Symbolic Debugging of Optimized Code | рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реНрдб рдХреЛрдб рдХрд╛ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдбреАрдмрдЧрд┐рдВрдЧ

рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реНрдб рдХреЛрдб рдХрд╛ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдбреАрдмрдЧрд┐рдВрдЧ (Symbo...

Read More тЖТ

Data Flow Analysis of Structured Flow Graph | рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрдб рдлреНрд▓реЛ рдЧреНрд░рд╛рдл рдХрд╛ рдбреЗрдЯрд╛ рдлреНрд▓реЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрдб рдлреНрд▓реЛ рдЧреНрд░рд╛рдл рдХрд╛ рдбреЗрдЯрд╛ рдлреНрд▓реЛ рд╡рд┐рд╢реНрд▓реЗрд...

Read More тЖТ

Code Improving Transformations in Compiler Design | рдХреЛрдб рд╕реБрдзрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЙрдиреНрдирдд рддрдХрдиреАрдХреЗрдВ

рдХреЛрдб рд╕реБрдзрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЙрдиреНрдирдд рддрдХрдиреАрдХреЗрдВ (Code Improving Tran...

Read More тЖТ

Introduction to Global Data Flow Analysis | рдЧреНрд▓реЛрдмрд▓ рдбреЗрдЯрд╛ рдлреНрд▓реЛ рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ рдХрд╛ рдкрд░рд┐рдЪрдп

рдЧреНрд▓реЛрдмрд▓ рдбреЗрдЯрд╛ рдлреНрд▓реЛ рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ рдХрд╛ рдкрд░рд┐рдЪрдп (Introduction to Global...

Read More тЖТ

Loop Optimization | рд▓реВрдк рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди

рд▓реВрдк рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди (Loop Optimization in Compiler Design) Loop Optimiza...

Read More тЖТ