Wednesday, April 16, 2014

COMPILER DESIGN PART 2

Structure and function of Compiler

Any compiler must perform two major tasks
§  analysis of the source program
§  synthesis of a machine language program


Fig: Structure of a compiler
Scanner
§  the scanner begins the analysis of the source program by reading the input, character by character, and grouping characters into individual words and symbols (tokens)
§  RE (Regular Expression)
§  NFA (Non-deterministic finite automata)
§  DFA (Deterministic finite automata)
§  LXA
Parser
§  Given a format syntax specification (typically as a context-free grammar [CFG]), the parser reads tokens and groups them into units as specified by the productions of the CFG being used.
§  As syntactic structure is recognized, the parser either calls corresponding semantic routines directly or builds a syntax tree.
§  CFG (Context Free Grammar)
§  BNF (Backus-Naur Form)
§  GAA (Grammar Analysis Algorithms)
§  LL, LR, SLR, LALR Parsers
§  YACC
Semantic Routines
§  perform two functions
§  check the static semantics of each construct
§  Do the actual translation
§  heart of the compiler
§  syntax Directed Translation
§  semantic Processing Techniques
§  IR (intermediate Representation)
Optimizer
§  The IR generated by the semantic routines is analyzed and transformed into functionally equivalent but improved IR code
§  This phase can be very complex and slow
§  peehole optimization
§  loop optimization, register allocation, code scheduling
§  register and temporary management
§  peehole optimization
Code Generator
§  interpretive code generation
§  generating code from Tree/Dag
§  Grammar-Based code generator

No comments:

Post a Comment