Let me tell what parser is first::::
A parser is a compiler or interpreter component that breaks data into smaller elements for easy translation into another language. A parser takes input in the form of a sequence of tokens or program instructions and usually builds a data structure in the form of a parse tree or an abstract syntax tree.
The overall process of parsing involves three stages:
Lexical Analysis: A lexical analyzer is used to produce tokens from a stream of input string characters, which are broken into small components to form meaningful expressions.
Syntactic Analysis: Checks whether the generated tokens form a meaningful expression. This makes use of a context-free grammar that defines algorithmic procedures for components. These work to form an expression and define the particular order in which tokens must be placed.
Semantic Parsing: The final parsing stage in which the meaning and implications of the validated expression are determined and necessary actions are taken.
A parser's main purpose is to determine if input data may be derived from the start symbol of the grammar.
This is achieved as follows:
Top-Down Parsing: Involves searching a parse tree to find the left most derivations of an input stream by using a top-down expansion. Examples include LL parsers and recursive-descent parsers.
Bottom-Up Parsing: Involves rewriting the input back to the start symbol. This type of parsing is also known as shift-reduce parsing. One example is a LR parser.
Parsers are widely used in the following technologies:
Java and other programming languages
HTML and XML
Interactive data language and object definition language
Database languages, such as SQL
Examples of Top-down parsers
Some of the parsers that use top-down parsing include:
Recursive descent parser
Examples of Bottom-up parsers :::
Some of the parsers that use bottom-up parsing include:
BC (bounded context) parsing
Canonical LR parser