Dies ist der Befehl antlr, der im kostenlosen OnWorks-Hosting-Provider über eine unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
antlr – EIN weiteres Tool zur Spracherkennung
SYNTAX
Antlr [Optionen] grammar_files
BESCHREIBUNG
Antlr wandelt eine erweiterte Form der kontextfreien Grammatik in eine Reihe von C-Funktionen um, die
Implementieren Sie direkt eine effiziente Form eines deterministischen rekursiv absteigenden LL(k)-Parsers.
Kontextfreie Grammatiken können durch Prädikate erweitert werden, um einen Einfluss der Semantik zu ermöglichen
Parsing; Dies ermöglicht eine Form der kontextsensitiven Analyse. Selektives Backtracking ist ebenfalls möglich
verfügbar, um Nicht-LL(k)- und sogar Nicht-LALR(k)-Konstrukte zu verarbeiten. Antlr produziert auch a
Definition eines Lexers, der automatisch in C-Code für eine DFA-basierte Konvertierung konvertiert werden kann
Lexer von dlg. Daher, Antlr erfüllt eine ähnliche Funktion wie jacc, Wie auch immer es ist
deutlich flexibler und besser in einen Lexer-Generator integriert (Antlr Direkt
erzeugt dlg Code, wohingegen jacc und lex werden unabhängige Beschreibungen gegeben). nicht wie jacc
was akzeptiert Lalr(1) Grammatiken, Antlr akzeptiert LL(k)-Grammatiken in einer erweiterten BNF-Notation –
wodurch die Notwendigkeit von Vorrangregeln entfällt.
Like jacc Grammatiken, Antlr Grammatiken können automatisch verwaltete Symbolattribute verwenden
Werte, die als Dollarvariablen bezeichnet werden. Weiter, weil Antlr generiert Top-Down-Parser,
Beliebige Werte können von übergeordneten Regeln geerbt werden (wie Funktionsparameter übergeben).
Antlr verfügt außerdem über einen Mechanismus zum Erstellen und Bearbeiten abstrakter Syntaxbäume.
Es gibt noch viele weitere Feinheiten Antlr, einschließlich der Möglichkeit, eine Grammatik zu verbreiten
über mehrere Dateien oder sogar mehrere Grammatiken in einer einzigen Datei, die Möglichkeit, eine zu generieren
Version der Grammatik mit entfernten Aktionen (zu Dokumentationszwecken) und viele
more.
OPTIONAL
-ck n Verwenden Sie bis zu n Symbole des Lookaheads bei Verwendung von komprimierter (linearer Näherung)
Schau voraus. Diese Art von Look-Ahead ist sehr kostengünstig zu berechnen und wird schon früher ausprobiert
vollständiger LL(k)-Lookahead, der im schlimmsten Fall von exponentieller Komplexität ist. In
Im Allgemeinen kann der komprimierte Lookahead viel tiefer sein (z. B. -ck 10) als der vollständige
Lookahead (der normalerweise kleiner als 4 sein muss).
-CC Generieren Sie C++-Ausgaben sowohl von ANTLR als auch von DLG.
- kr Erstellen Sie einen Querverweis für alle Regeln. Drucken Sie für jede Regel eine Liste aller anderen aus
Regeln, die darauf verweisen.
-e1 Unklarheiten/Fehler werden nur wenig detailliert angezeigt (Standard).
-e2 Unklarheiten/Fehler detaillierter dargestellt.
-e3 Unklarheiten/Fehler werden bis ins kleinste Detail dargestellt.
-Vertrauen Datei
Umbenennen err.c einordnen.
-fh Datei
Umbenennen stdpccts.h Kopfzeile (schaltet sich ein -gh) einordnen.
-fl Datei
Benennen Sie die lexikalische Ausgabe um, parser.dlg, einordnen.
-fm Datei
Datei mit lexikalischen Modusdefinitionen umbenennen, mode.h, einordnen.
-Fr Datei
Datei umbenennen, die global sichtbare Symbole neu zuordnet, remap.h, einordnen.
-ft Datei
Umbenennen Tokens.h einordnen.
zu Generieren Sie ANSI-kompatiblen Code (Standardfall). Dies wurde nicht rigoros getestet
ANSI XJ11 C-kompatibel sein, aber es ist nah dran. Die normale Ausgabe von Antlr is
derzeit sowohl unter K&R, ANSI C als auch C++ kompilierbar – diese Option bewirkt nichts
weil Antlr generiert eine Reihe von #ifdefs, um je nach dem das Richtige zu tun
Sprache.
-gc Zeigt an, dass Antlr sollte keinen C-Code generieren, d. h. nur eine Analyse durchführen
Grammatik.
-gd In jedem ist C-Code eingefügt Antlr generierte Parsing-Funktionen zur Bereitstellung
Benutzerdefinierte Behandlung eines detaillierten Parse-Trace. Der eingefügte Code besteht aus
Aufrufe der vom Benutzer bereitgestellten Makros oder aufgerufenen Funktionen zzTRACEIN und zzTRACEOUT.
Das einzige Argument ist a verkohlen * zeigt auf eine Zeichenfolge im C-Stil, die die Grammatik darstellt
Regel, die von der aktuellen Parsing-Funktion erkannt wird. Wenn keine Definition für die angegeben ist
Bei Trace-Funktionen wird beim Ein- und Austritt einer Regel eine entsprechende Meldung ausgegeben
dass eine bestimmte Regel eingegeben oder verlassen wurde.
-geben Sie Generieren Sie für jedes Nicht-Terminal eine Fehlerklasse.
-gh Generieren stdpccts.h für nicht-ANTLR-generierte Dateien zum Einschließen. Diese Datei enthält
Alle Definitionen, die zur Beschreibung des Parsertyps erforderlich sind, der von generiert wird Antlr (z. B. wie viel
Lookahead verwendet wird und ob Bäume erstellt werden oder nicht) und enthält die Kopfzeile
vom Benutzer angegebene Aktion.
-gk Generieren Sie Parser, die Lookahead-Abrufe verzögern, bis sie benötigt werden. Ohne diese Option,
Antlr generiert Parser, die immer vorhanden sind k Lookahead-Token verfügbar.
-gl Generieren Sie Zeileninformationen zu Grammatikaktionen im C-Parser des Formulars # Linie "Datei"
Dadurch sind Fehlermeldungen des C/C++-Compilers umso sinnvoller
Zeigen Sie auf die Grammatikdatei, nicht auf die resultierende C-Datei. Auch das Debuggen ist einfacher,
weil Sie die Grammatik und nicht die C-Datei durchgehen werden.
-gs Generieren Sie keine Sätze für Token-Ausdruckslisten. Generieren Sie stattdessen eine ||-getrennt
eine Reihe von LA(1)==token_nummer. Standardmäßig werden Sätze generiert.
-GT Generieren Sie Code für Abstract-Syntax-Bäume.
-gx Erstellen Sie keine lexikalischen Analysedateien (dlg-bezogen). Diese Option sollte sein
Wird angegeben, wenn der Benutzer einen benutzerdefinierten lexikalischen Analysator bereitstellen möchte. Es kann auch sein
verwendet werden in um Skripte bewirken, dass bei einer Änderung nur der Parser neu erstellt wird
Die Eingabegrammatiken beeinflussen die lexikalische Struktur.
-k n Setze k von LL(k) auf n; dh setzen Sie die Look-Ahead-Tokens (Standard == 1).
-o dir Verzeichnis, in dem die Ausgabedateien abgelegt werden sollen (Standard="."). Das ist sehr schön für
Halten Sie das Quellverzeichnis frei von ANTLR- und DLG-Spawn.
-p Die vollständige Grammatik, gesammelt aus allen eingegebenen Grammatikdateien und bereinigt
Kommentare und eingebettete Aktionen werden aufgelistet stdout. Dies soll Abhilfe schaffen
die gesamte Grammatik als Ganzes zu betrachten und die Notwendigkeit zu beseitigen, Aktionen durchzuführen
prägnant formuliert, damit die Grammatik leichter lesbar ist. Daher ist es vorzuziehen
Betten Sie selbst komplexe Aktionen direkt in die Grammatik ein, anstatt sie als solche zu bezeichnen
Unterprogramme, da der Aufwand für Unterprogrammaufrufe eingespart wird.
-pa Diese Option ist dieselbe wie -p außer dass die Ausgabe mit der ersten Anmerkung versehen ist
Sätze, die aus der Grammatikanalyse ermittelt wurden.
-prc on
Aktivieren Sie die Berechnung und das Heben des Prädikatkontexts.
-prc WOW!
Schalten Sie die Berechnung und das Heben des Prädikatkontexts aus. Diese Option ergibt 1.10
verhält sich wie die Version 1.06 mit Option -pr An. Die Kontextberechnung ist fehlerhaft
default.
-rl n Begrenzen Sie die maximale Anzahl der von der Grammatikanalyse verwendeten Baumknoten auf n.
Gelegentlich, Antlr ist nicht in der Lage, eine vom Benutzer übermittelte Grammatik zu analysieren. Das
Eine seltene Situation kann nur auftreten, wenn die Grammatik groß ist und der Lookahead groß ist
ist größer als eins. Zur Handhabung wird von PCCTS ein nichtlinearer Analysealgorithmus verwendet
allgemeiner Fall des LL(k)-Parsings. Die durchschnittliche Komplexität der Analyse beträgt jedoch
nahezu linear aufgrund einiger ausgefallener Beinarbeit bei der Implementierung, die die reduziert
Anzahl der Aufrufe des vollständigen LL(k)-Algorithmus. Es wird eine Fehlermeldung angezeigt,
Wenn dieser Grenzwert erreicht ist, gibt dies an, wann das Grammatikkonstrukt analysiert wird
Antlr eine Nichtlinearität treffen. Verwenden Sie diese Option, wenn Antlr scheint zum Mittagessen auszugehen und
Ihre Festplatte fängt an zu schlagen; versuchen n=10000 zum Starten. Sobald das störende Konstrukt vorhanden ist
identifiziert wurde, versuchen Sie, die Mehrdeutigkeit zu beseitigen Antlr versuchte mit zu überwinden
große Look-Ahead-Analyse. Die Einführung von (...)? Backtracking-Blöcke
beseitigt einige dieser Probleme – Antlr analysiert keine beginnenden Alternativen
mit (...)? (Es wird bei Bedarf einfach zur Laufzeit zurückverfolgt).
-w1 Niedrige Warnstufe einstellen. Nicht warnen, wenn semantische Prädikate und/oder (...)? Blöcke sind
Es wird angenommen, dass es mehrdeutige Alternativen abdeckt.
-w2 Mehrdeutige Parsing-Entscheidungen führen zu Warnungen, auch wenn semantische Prädikate oder (...)?
Blöcke verwendet werden. Warnen Sie, wenn der Prädikatkontext berechnet wird und semantische Prädikate vorhanden sind
alternative Produktionen unvollständig eindeutig zu klären.
- Lesen Sie die Grammatik aus der Standardeingabe und generieren Sie sie stdin.c als Parserdatei.
SPECIAL ÜBERLEGUNGEN
Antlr funktioniert... denken wir. Es gibt keine implizite Garantie für irgendetwas. Wir behalten uns Nr. vor
legal Rechte an der Software Purdue Compiler Construction Tool Set (PCCTS) –
PCCTS ist gemeinfrei. Eine Einzelperson oder ein Unternehmen kann damit machen, was sie wollen
Quellcode, der mit PCCTS vertrieben wird, oder der von PCCTS generierte Code, einschließlich der
Einbindung von PCCTS oder seiner Ausgabe in kommerzielle Software. Wir ermutigen Benutzer dazu
Software mit PCCTS entwickeln. Wir bitten jedoch um Anerkennung für die Entwicklung
PCCTS. Mit „Kredit“ meinen wir, dass wenn Sie unseren Quellcode in einen Ihrer integrieren
Programme (kommerzielles Produkt, Forschungsprojekt oder sonstiges), dass Sie dies anerkennen
Tatsache irgendwo in der Dokumentation, im Forschungsbericht usw. Wenn Sie PCCTS mögen und haben
Ich habe mit der Ausgabe ein schönes Tool entwickelt. Bitte erwähnen Sie, dass Sie es mit PCCTS entwickelt haben.
Solange diese Richtlinien befolgt werden, gehen wir davon aus, dass wir dieses System weiter verbessern werden
Wir gehen davon aus, dass weitere Tools verfügbar sein werden, sobald sie fertiggestellt sind.
Verwenden Sie antlr online über die Dienste von onworks.net