Unit 2
Unit 2
Unit 2
SYNTAX ANALYSIS
Parser
Parser is a compiler that is used to break the data into smaller elements coming from
lexical analysis phase.
A parser takes input in the form of sequence of tokens and produces output in the
form of parse tree.
Parsing is of two types: top down parsing and bottom up parsing
TOP-DOWN PARSER:
The top down parsing is known as recursive parsing or predictive parsing.
Bottom up parsing is used to construct a parse tree for an input string.
In the top down parsing, the parsing starts from the start symbol and transform it into
the input symbol.
Recursive Descent Parsing: Recursive descent parsing is a type of top-down parsing
technique. This technique follows the process for every terminal and non-terminal entity. It
reads the input from left to right and constructs the parse tree from right to left. As the
technique works recursively, it is called recursive descent parsing.
Back-tracking: The parsing technique that starts from the initial pointer, the root node. If the
derivation fails, then it restarts the process with different rules.
BOTTOM-UP PARSING: The bottom-up parsing works just the reverse of the top-down
parsing. It first traces the rightmost derivation of the input until it reaches the start symbol.
Shift-
Reduce Parsing: Shift-reduce parsing works on two steps: Shift step and Reduce step.
Shift step: The shift step indicates the increment of the input pointer to the next input symbol
that is shifted.
Reduce Step: When the parser has a complete grammar rule on the right-hand side and
replaces it with RHS.
s rule
aS 1
LR Parsing: LR parser is one of the
most efficient aaS 1 syntax analysis
techniques as it works with context-free
grammar. In LR aaaS 1 parsing L stands for the
left to right tracing, and R stands for
the right to left tracing.
aaaaS 1
CONTEXT- FREE GRAMMER:
G=(V,T,P,S)
Construct CFG for the language having any number of a's over the set ∑={a}
Solution
Regular Expression= a*
S->aS rule 1
S-> ε rule 2
Now if we want to derive a string "aaaaaa" we can start with start symbol
We can have a null string because S is a start symbol and rule 2 gives S-> ε
Example
The grammar ({A}, {a, b, c}, P, A), P : A → aA, A → abc.
The grammar ({S, a, b}, {a, b}, P, S), P: S → aSa, S → bSb, S → ε
The grammar ({S, F}, {0, 1}, P, S), P: S → 00S | 11F, F → 00F | ε
Generation of Derivation Tree
Representation Technique
Root vertex − Must be labeled by the start symbol.
Vertex − Labeled by a non-terminal symbol.
Leaves − Labeled by a terminal symbol or ε.
If S → x1x2 …… xn is a production rule in a CFG, then the parse tree /
derivation tree will be as follows −
There are two different approaches to draw a derivation tree −
Top-down Approach −
Starts with the starting symbol S
Goes down to tree leaves using productions
Bottom-up Approach −
Starts from tree leaves
Proceeds upward to the root which is the starting symbol S
Derivation or Yield of a Tree
The derivation or the yield of a parse tree is the final string obtained by
concatenating the labels of the leaves of the tree from left to right, ignoring the
Nulls. However, if all the leaves are Null, derivation is Null.
Example
Example