Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ yacc(1) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

lex(1)

yacc(1)                                                             yacc(1)

NAME
     yacc - Parser erstellen

SYNTAX
     yacc [Option...] Datei

BESCHREIBUNG
     Das Kommando yacc (yet another compiler-compiler) wandelt eine kon-
     textfreie Grammatik in eine Menge von Tabellen für einen einfachen
     Automaten um, der einen LALR(1)-Syntaxanalyse-Algorithmus ausführt.
     Die Grammatik kann mehrdeutig sein; für die Auflösung dieser Mehrdeu-
     tigkeiten werden bestimmte Regeln angewendet.

     Standardmäßig erhalten alle Ausgabedateien von yacc das Prefix y, alle
     externen Namen das Prefix yy. Diese Prefixe sind über Optionen änder-
     bar (z. B. falls mehrere yacc-Prozesse gleichzeitig im selben Datei-
     verzeichnis ablaufen sollen).

     Die Ausgabedatei y.tab.c muß zur Erstellung eines Programms yyparse
     vom C-Übersetzer übersetzt werden. Dieses Programm muß mit dem lexika-
     lischen Analyse-Programm yylex sowie mit main und yyerror, einer Feh-
     lerbehandlungsroutine, gebunden werden. Diese Routinen sind vom Benut-
     zer bereitzustellen. Das Kommando lex(1) ist zum Erstellen lexikali-
     scher Analysatoren, die von yacc verwendet werden können, nützlich.

OPTIONEN
     -v   Stellt die Datei y.output bereit. Sie enthält eine Beschreibung
          der Syntaxanalyse- Tabellen und eine Meldung über Konflikte, die
          aus Mehrdeutigkeiten in der Grammatik entstanden sind.

     -d   Erzeugt die Datei y.tab.h mit den #define-Anweisungen, die die
          von yacc zugewiesenen Token-Codes mit den vom Benutzer angegebe-
          nen Token-Namen in Verbindung setzen. Damit können auch andere
          Quelldateien als y.tab.c auf die Token-Codes zugreifen.

     -l   Gibt an, daß der in y.tab.c erzeugte Code keine #line-Anweisungen
          enthält. Verwenden Sie diese Option nur, wenn Grammatik und zuge-
          hörige Aktionen völlig ausgetestet, d. h. fehlerfrei sind.

     -Q[o]
          Legt fest, ob die Versionsinformation über die erstellte yacc-
          Version in y.tab.c geschrieben werden soll.

          o steht für eine ja/nein-Angabe in der jeweils eingestellten
          Sprachumgebung. In einer englischsprachigen Umgebung geben Sie
          -Qy an, um die Versionsinformation in die Datei y.tab.c zu
          schreiben und -Qn, um keine Information zu schreiben. In einer
          deutschsprachigen Umgebung müssen Sie beispielsweise -Qj oder -Qn
          angeben.

          Standardmäßig wird keine Versionsinformation geschrieben.




Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

yacc(1)                                                             yacc(1)

     -i   Ermöglicht das direkte Erstellen internationalisierter Programme.

          Wenn Sie yacc mit der Option -i aufrufen, werden in den von yacc
          generierten Teil der erzeugten Datei Aufrufe der Funktion
          gettxt() geschrieben. gettxt() hat Zugriff auf die internationa-
          lisierten Meldungskataloge [siehe gettxt(3C)].

     -t   Übersetzt standardmäßig Code zur Unterstützung der Fehlersuche
          zur Laufzeit. Der Fehlersuchcode wird in y.tab.c immer generiert,
          steht jedoch unter bedingter Übersetzungssteuerung. Standardmäßig
          wird dieser Code bei der Übersetzung von y.tab.c nicht berück-
          sichtigt. Unabhängig von der Verwendung der Option -t wird die
          Bereitstellung des Codes für die Laufzeit-Fehlersuche durch das
          Präprozessor-Symbol YYDEBUG gesteuert. Wenn YYDEBUG einen Wert
          ungleich Null hat, wird der Fehlersuchcode eingebunden. Ist der
          Wert gleich Null, wird der Code nicht eingebunden. Größe und
          Ablaufzeit eines ohne Fehlersuchcode erstellten Programms ist
          kleiner bzw. kürzer.

     -b Datei-Prefix
          Verwendet für die Ausgabedateien das Prefix Datei-Prefix anstelle
          von y (z. B. Datei-Prefix.tab.c).

     -p Symbol-Prefix
          Verwendet für externe Namen das Prefix Symbol-Prefix anstelle von
          yy (z. B. Symbol-Prefixparse).

     -V   Druckt die Versionsinformation für yacc auf die Standard-
          Fehlerausgabe.

     --   Ende der Optionenliste. Die Angabe ist nötig, wenn der erste
          Dateiname mit - beginnt.

FEHLERMELDUNGEN
     Die Anzahl der reduziere/reduziere- und lies/reduziere-Konflikte wird
     auf der Standard-Fehlerausgabe gemeldet; ein detaillierterer Bericht
     ist in der Datei y.output zu finden. Eine Meldung erfolgt auch dann,
     wenn einige Regeln nicht vom Startsymbol aus erreichbar sind.

INTERNATIONALE UMGEBUNG
     Die Sprache der Meldungstexte und ja/nein-Angaben werden durch die
     Umgebungsvariablen LCALL, LCMESSAGES oder LANG bestimmt.

     In der Standardeinstellung verhält sich das System so, als wäre es
     nicht internationalisiert, d. h. die Meldungstexte erscheinen in eng-
     lischer Sprache und ja/nein-Angaben müssen ebenfalls in englischer
     Sprache (y oder n) eingegeben werden. Wenn Sie die Sprachumgebung
     ändern wollen, müssen Sie eine dieser Variablen entsprechend setzen.

     Die Umgebungsvariable LCCTYPE legt fest, welche Zeichen in der aktu-
     ell gültigen Umgebung als Buchstaben und Ziffern definiert sind. Dies
     ist bei Symbolnamen von Bedeutung.


Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

yacc(1)                                                             yacc(1)

     Hat die Variable LCCTYPE den Wert DeDE.646, werden z. B. der sen-
     krechte Strich | und die öffnende geschweifte Klammer { als Buchstaben
     interpretiert (ihr Code entspricht in der deutschen Variante des Zei-
     chensatzes ISO 646 den Umlauten ö und ä). Dadurch kann yacc die Gram-
     matiken nicht mehr richtig auswerten. In einer solchen Umgebung können
     Sie deshalb nicht mit yacc arbeiten. Setzen Sie in diesem Fall entwe-
     der die Variable LCCTYPE auf den Wert EnUS.ASCII oder weisen Sie der
     Variablen LANG und gegebenenfalls auch der Variablen LCCTYPE die
     leere Zeichenkette zu.

     Ausführliche Informationen zu den Abhängigkeiten der Umgebungsvaria-
     blen und zur Internationalisierung im allgemeinen finden Sie im Hand-
     buch "Leitfaden für Programmierer: Internationalisierung - Lokalisie-
     rung". Zur Einstellung der Benutzerumgebung siehe auch environ(5).

DATEIEN
     y.output, y.tab.c, y.tab.h
          Definitionen von Token-Namen

     yacc.tmp, yacc.debug, yacc.acts
          temporäre Dateien

     LIBDIR/yaccpar
          Analysealgorithmus-Prototyp für C-Programme

     LIBDIR
          im allgemeinen /usr/ccs/lib

SIEHE AUCH
     lex(1).
























Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026