Um zu solch einem Parser zu gelangen, bieten sich grundsätzlich zwei Vorgehensweisen an. Zum einen besteht die Möglichkeit, einen entsprechenden Parser eigenständig zu implementieren, oder aber man bedient sich der Hilfe eines der vielen, am Markt frei erhältlichen, Parsergeneratoren. Diese übernehmen die Erstellung eines entsprechenden Parsers, indem der Programmierer lediglich die Grammatik spezifiziert. Einer der bekanntesten Parsergeneratoren im Java-Umfeld ist der "Java Compiler Compiler", kurz JavaCC. Die vorliegende Seminararbeit wird sich mit dem JavaCC beschäftigen. Sie wird zunächst einmal zeigen, welche Konzepte dahinter stehen, bevor dann Anhand einiger praktischer Beispiele die Funktionsweise näher erläutert wird.
JavaCC steht für "Java Compiler Compiler" und bezeichnet einen Scanner- und Parsergenerator in und für Java.
Als Scanner- bzw. Parsergeneratoren bezeichnet man jene Programme, die einen eben solchen Parser generieren. Es handelt sich hierbei also um ein Werkzeug und stellt somit keinen eigenständigen Scanner bzw. Parser dar. JavaCC ist laut Sun der am meisten verwendete Parsergenerator im Java Umfeld und zeichnet sich durch seine einfache Handhabung aus. Bereits nach kurzer Einarbeitungszeit ist der Anwender in der Lage, kleinere Parser zu entwerfen. Erreicht wird dies unter anderem dadurch, dass JavaCC mit einer zentralen Definitionsdatei auskommt, in der alle nötigen Konfigurationen vorgenommen werden. JavaCC erstellt sogenannte LL(k) - Parser und geht dabei nach dem Top - Down Ansatz vor. LL(k) - Grammatiken sind zwar nicht die ausdrucksstärksten, dafür jedoch leicht umsetzbar. Des Weiteren lassen sich Grammatiken, die in erweiterter Backus-Naur-Form vorliegen, mit relativ geringem Aufwand in JavaCC abbilden. JavaCC unterstützt standardmäßig Unicode und erlaubt einfaches Debuggen, was den Entwicklungsprozess zusätzlich erleichtert. Da JavaCC im JavaUmfeld angesiedelt ist, steht die gesamte Ausdruckstärke der Java Fehlerbehandlung zur Verfügung. JavaCC unterstützt die einfache Erstellung von Syntaxbäumen mittels des Präprozessors JJTree, der standardmäßig mitgeliefert wird. Die folgende Auflistung fasst die eben genannten Eigenschaften nocheinmal stichwortartig zusammen.