ANTLR Listeners
Learn how to build an application using the parse-tree listener mechanism.
We'll cover the following...
ANTLR’s runtime library supports two types of parse-tree walking mechanisms: parse-tree listener and parse-tree visitors.
In this lesson, we will learn about parse-tree listeners. ANTLR automatically generates a listener interface to handle events triggered by the parse-tree walker. These listeners function similarly to SAX document handlers used in XML parsers, where events like startDocument
and endDocument
are fired as the document is processed.
Parse-tree walker
ANTLR’s runtime library provides the ParseTreeWalker
class for walking trees and calling listeners. As part of the language application development process, we build a ParseTreeListener
implementation that uses application-specific code to interact with a larger application.
The ANTLR produces a ParseTreeListener
subclass that corresponds to the grammar, with an entry and exit method for each rule.
Application implementation with parse-tree listeners
Imagine beginning an internship in a software house and the boss assigns us a task to write a decent calculator that performs the calculations with the commands as follows:
Plus value1 value2; // value1 + value2Minus value1 value2; // value1 - value2Multiply value1 value2; // value1 * value2Divide value1 value2; // value1 / value2Modulus value1 value2; // value1 % value2
To write such a decent calculator, we first have to define a grammar that can accept the above-mentioned commands.
Before we begin, we need to define the grammar rules. Based on the specification provided by our supervisor, the grammar should include rules for operations such as plus
, minus
, ...