Start |
Text2HTML |
Wikipedia |
Yacc2TT |
Delphi-Parser |
Java-Parser |
C-Präprozessor |
C-Parser |
HTML4 |
Nützliches |
MIME-Parser |
Spamfilter |
Weitere Beispiele |
Freie Komponenten |
Das Projekt Java16.ttp reproduziert die Java-Spezifikation, die hier wiedergegeben ist:
Java16.ttp wurde allerdings nicht direkt aus dieser Spezifikation abgeleitet, sondern aus der überarbeiteten ANTLR-Version (s.u.). Während mit dem ANTLR Parsern automatisch im Code so weit vorausgeschaut wird, wie nötig ist, um zwischen verschiedenen grammatischen Alternativen zu entscheiden, ist im TextTransformer explizit anzugeben, wann eine Vorausschau stattfinden soll und wie sie erfolgen soll. Das bedeutet zwar etwas Mehrarbeit bei der Formulierung der Grammatik. Aber zum einen wird der Entwickler dabei durch die Grammatikprüfungen des TextTransformers und die Auflistungen Anfängermengen unterstützt. Und zweitens hat das Verfahren auch den Vorteil, dass man die Kontrolle über den Parser behält. Verschwenderischer Gebrauch der zeitaufwändigen Vorausschaumöglichkeiten wird vermieden, indem man einen Parser soweit LL(1)-konform macht wie möglich. Außerdem ist eine Vorausschau im TextTransformer wesentlich einfacher zu Debuggen als der unverständliche, oft über Ausnahmen gesteuerte ANTLR Mechanismus. Im TextTransformer funktioniert eine Vorausschau genauso wie eine normale Produktion. Sie kann sogar bereits in der TextTransformer IDE schrittweise getestet werden.
Im Installationspaket des TextTransformers gibt es einen älteren aus einem Coco/R Projekt abgeleiteten Java Parser. Anhand dieses Parsers ist in der Hilfe beschrieben, wie wie ein Parse-Baum mit dem Parser zu erzeugen ist und wie ein Kopierprogramm erzeugt werden kann, dass leicht zur Instrumentierung von Java-Code zu verwenden ist.
Als Test wurden die 400 Java-Dateien aus denen antlrworks-1.2.3 (s.u.) besteht im Transformations-Manager der TextTransformers ausgewählt und verarbeitet. Alle Dateien konnten erfolgreich geparst werden.
Java16.ttp ist eine Anpassung des ANTLR Java Parsers:
mit der folgenden Lizenz:
[The "BSD licence"]
Copyright (c) 2007-2008 Terence Parr
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
to the top |