Generally, there are two main strategies of parsing CLs –
top-down, where the parse tree of the given input is constructed
from the root towards the leaves and bottom-up, where the
parse tree is constructed in the opposite direction [2], [13],
[17]. A typical type of top-down parser is a LL(1) parser,
which is supported by the ANTLR (ANother Tool for
Language Recognition) or JavaCC parser generators. Most
commonly-used bottom-up parsers are LALR(1) parsers, which
are supported by Yacc/Bison parser generators. In general,
bottom-up parsing techniques are more powerful than the topdown
ones in the sense of the class of recognized languages
[13].