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 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