affiliate marketing

Saturday, 17 December 2011

Parsing – Principles of Compiler Design

Need of a Parser

Syntax Analyzer creates the syntactic structure of the given source program.
This syntactic structure is mostly a parse tree.
Syntax Analyzer is also known as Parser.
The syntax of a programming is described by a context-free grammar (CFG).

The syntax analyzer (Parser) checks whether a given source program satisfies the rules implied by a context-free grammar or not.
If it satisfies, the parser creates the parse tree of that program.
Otherwise the parser gives the error messages.
Parser
Parser  works on a stream of tokens.
  The smallest item is a token.

We categorize the parsers into two groups:
1.Top-Down Parser
the parse tree is created top to bottom, starting from the root.
2.Bottom-Up Parser
the parse is created bottom to top; starting from the leaves
Both top-down and bottom-up parsers scan the input from left to right (one symbol at a time).
Efficient top-down and bottom-up parsers can be implemented only for sub-classes of context-free grammars.
LL for top-down parsing
LR for bottom-up parsing

Context-Free Grammars
Used to Systematically describe the Syntax of Programming Language Constructs like Expressions and Statements.
Eg. Syntactic Variable  : stmt
               stmt to denote the statements
Variable :  expr
       expr to denote the expressions
  stmt   ->   if  (expr)  stmt  else  stmt

In a context-free grammar, we have:
A finite set of terminals (in our case, this will be the set of tokens)
A finite set of non-terminals (syntactic-variables)
A finite set of productions rules in the following form
A ® a          where A is a non-terminal and
   a is a string of terminals and non-terminals (including the empty string)
A start symbol (one of the non-terminal symbol)
Example:
E ®  E + E   |   E – E   |   E * E   |  E / E   |   - E
E ®  ( E )
E ® id

No comments:

Post a Comment