Zurück Weiter Inhaltsverzeichnis

4. Eingabedatei

4.1 Format

Die Eingabedatei hat folgendes Format:

PARAMETER

  Parameter = Wert
  ...

ENDE


REGELN

  Regel1
  Regel2
  ...

ENDE


START

  step
  step
  ...

ENDE 

Das Kommentarzeichen ist //. Leerzeilen, Leerzeichen und Groß- und Kleinschreibung sind weitgehend beliebig.

In der folgenden Beispiel-Eingabedatei beispiel.in sind alle Parameter im Parameterblock kurz erklärt, weiter unten folgt die vollständige Erklärung.

Der Regelblock enthält vollständig geklammerte Regeln, so wie in Einführung beschrieben.

Der Startblock kann die Anweisungen step und steps enthalten. Ein ``step'' oder ``Schritt'' endet, wenn auf alle Sätze, die im vorherigen Schritt erzeugt wurden, alle Regeln angewandt wurden. Die Anweisung steps führt solange Schritte aus, bis in einem Schritt kein neuer Satz mehr erzeugt wurde oder der festgelegte maximale Speicherbedarf überschritten wird, siehe Parameter.

4.2 Eine Beispiel-Eingabedatei


// Beispiel-Eingabedatei


PARAMETER

  chunksize = 10000                        // Speicher wird in Einheiten
                                           // von 10k angefordert

  Info bei Speicheranforderung ausgeben = BILD 
                                           // wenn Speicher chunksize
                                           // angefordert wird, wird ein
                                           // Informationsblock auf dem 
                                           // Bildschirm ausgegeben
    
  Dateiausgabe = EIN                       // Ausgabe in die Ausgabedatei
   
  Bildschirmausgabe = EIN                  // Ausgabe auf dem Bildschirm

//  Kommentarzeile = //                    // Kommentarsymbol festlegen


  Aequivalenzklassen ausgeben = DATEI      // Aequivalenzklassen werden nur
                                           // in die Ausgabedatei ausgegeben

  Aequivalenzklassen nur auf Disk = AUS    // Aequivalenzklassen werden
                                           // nur in die Ausgabedatei
                                           // ausgegeben

  neue Regeln ausgeben = EIN               // neue Regeln werden ausgegeben

  obsolete Regeln ausgeben = DATEI         // obsolete Regel werden
                                           // in die Ausgabedatei ausgegeben


  Unifikationsprozess ausgeben = AUS       // detaillierte Infomationen
                                           // ueber das Finden eines
                                           // allgemeinsten Unifikators

  Einordnen ausgeben = AUS                 // detaillierte Informationen
                                           // ueber das Einordnen von
                                           // Regelergebnissen

  Regelergebnisse ausgeben = AUS           // alle Regelergebnisse
                                           // werden ausgegeben

  standardisieren ausgeben = AUS           // Ergebnisse aus dem
                                           // Standardisieren werden
                                           // ausgegeben

  Suchbaum ausgeben = AUS                  // alle gefundenen Ausdruecke
                                           // und Unterausdruecke werden
                                           // nach jedem Schritt ausgegeben

  Aequivalenzklassenverweise ausgeben = EIN

  Warnungen ausgeben = AUS                 // (sehr viele) Warnungen
                                           // fuer den Benutzer 

  bei Warnung anhalten = AUS               // bei einer Warnung auf 
                                           // Tastendruck warten

  bei Fehler anhalten = EIN                // bei einem Fehler auf
                                           // Tastendruck warten

  max Laenge Regelergebnis = 8             // Regelergebnisse laenger
                                           // als diese Laenge werden
                                           // ignoriert

  max Laenge Substitution = 4              // Regelergebnisse, die aus
                                           // Substitutionen laenger als
                                           // diese Laenge enstehen
                                           // wuerden werden ignoriert

  max anz versch Variablen = 2             // Regelergebnisse, die mehr
                                           // verschiedene Variablen als
                                           // diese Anzahl enthalten
                                           // werden ignoriert

  max anz Regelvariablen = 10              // Variablen #0-#9 duerfen in
                                           // Regeln vorkommen

  max Speicher = 1000000                   // maximal allozierter
                                           // Speicher in byte, ungefaehr!

ENDE


REGELN

  *(*(#0,#1),#2) = *(#0,*(#1,#2))

  *(1,#0) = #0

  *(i(#0),#0) = 1

ENDE


START

// steps                                   // beliebig viele Schritte werden
                                           // ausgefuehrt

  step                                     // 4 Schritte werden ausgefuehrt
  step
  step
  step

ENDE

4.3 Parameter

chunksize = Größe

Speicher wird in Einheiten von Größe Bytes angefordert. Die Einheiten werden dabei verschiedenen ``Pools'' zugeordnet, je nach Typ der gespeicherten Strukturen. Die Größe sollte dabei größer als etwa 1000 sein, da sonst zu viel Speicher für Verwaltungsaufgaben verbraucht wird. Voreinstellung ist 10000. Je kleiner die Größe, desto öfter wird ein Infoblock ausgegeben, falls ``Info bei Speicheranforderung ausgeben'' eingeschaltet ist.

Info bei Speicheranforderung ausgeben = Wert

Der Wert kann EIN, AUS, BILD oder DATEI sein. Voreinstellung ist EIN. Dementsprechend wird bei Anforderung einer neuen Speichereinheit ein Info-Block auf dem Bildschirm und/oder in die Ausgabedatei ausgegeben. Zur Bedeutung der Einträge im Info-Block siehe Info-Block.

Dateiausgabe = Wert

Der Wert kann EIN oder AUS sein. Voreinstellung ist EIN. Dementsprechend wird die Ausgabe in die Ausgabedatei, siehe Kommandozeilenoptionen, ein- oder ausgeschaltet. Auch bei ausgeschalteter Dateiausgabe werden allerdings wenigstens alle Zeilen bis zu dieser Parameterzeile in die Ausgabedatei ausgegeben.

Bildschirmausgabe = Wert

Der Wert kann EIN oder AUS sein. Voreinstellung ist EIN. Dementsprechend wird die Ausgabe auf dem Bildschirm (Standardausgabe) ein- oder ausgeschaltet. Auch bei ausgeschalteter Bildschirmausgabe werden allerdings wenigstens alle Zeilen bis zu dieser Parameterzeile auf dem Bildschirm ausgegeben, desweiteren Fehlermeldungen etc.

Kommentarzeile = Wert

Der Wert kann eine beliebige Zeichenkette sein. Voreinstellung ist //. Zeichen in einer Zeile nach der Kommentarzeichenkette werden ignoriert. Die neue Kommentarzeichenkette ist ab der Zeile nach dieser Parameterzeile wirksam. In der Beispieleingabedatei ist diese Zeile auskommentiert, denn Zeichen nach // werden ja gemäß der Voreinstellung ignoriert. D.h. die Kommentarzeichenkette würde auf die leere Zeichenkette gesetzt werden und alle folgenden Zeilen würden ignoriert, da sie alle die leere Zeichenkette an der ersten Position enthalten. Beispiel: Kommentarzeile = /*// setzt die Kommentarzeichenkette auf /*.

Aequivalenzklassen nur auf Disk = Wert

Der Wert kann EIN oder AUS sein. Voreinstellung ist AUS. Dementsprechend werden Äquivalenzklassen in die Ausgabedatei bzw. auf dem Bildschirm ausgegeben. Dieser Parameter wurde durch den Parameter Aequivalenzklassen ausgeben überflüssig.

Aequivalenzklassen ausgeben = Wert

Der Wert kann EIN, AUS, BILD oder DATEI sein. Voreinstellung ist EIN. Dementsprechend werden die Äquivalenzklassen in die Ausgabedatei bzw. auf dem Bildschirm ausgegeben. Zum Format der Ausgabe siehe Äquivalenzklassen.

Aequivalenzklassenverweise ausgeben = Wert

Der Wert kann EIN oder AUS sein. Voreinstellung ist AUS. Dementsprechend werden Äquivalenzklassen, die nur einen Verweis enthalten, ebenfalls ausgegeben. Siehe Technische Details.

neue Regeln ausgeben = Wert

Der Wert kann EIN, AUS, BILD oder DATEI sein. Voreinstellung ist EIN. Dementsprechend werden die neuen Regeln in die Ausgabedatei bzw. auf dem Bildschirm ausgegeben.

obsolete Regeln ausgeben = Wert

Der Wert kann EIN, AUS, BILD oder DATEI sein. Voreinstellung ist EIN. Dementsprechend werden neue Regeln, die obsolet geworden sind, in die Ausgabedatei bzw. auf dem Bildschirm ausgegeben. Zum Begriff obsolet und neue Regeln siehe Einführung.

Unifikationsprozess ausgeben = Wert

Der Wert kann EIN, AUS, BILD oder DATEI sein. Voreinstellung ist AUS. Dementsprechend werden detaillierte Angaben über den Unifikationsprozess in die Ausgabedatei bzw. auf dem Bildschirm ausgegeben. Dieser Parameter dient dazu festzustellen, ob bestimmte Ergebnisse erzeugt werden bzw. warum sie nicht erzeugt werden. Hierdurch werden i.d.R. sehr große Ausgabedateien (größer 100 MB) geschrieben.

Einordnen ausgeben = Wert

Der Wert kann EIN, AUS, BILD oder DATEI sein. Voreinstellung ist AUS. Dementsprechend werden detaillierte Angaben über das Einordnen von Ergebnissen in die Ausgabedatei bzw. auf dem Bildschirm ausgegeben. Dieser Parameter dient dazu festzustellen, in welche Äquivalenzklassen bestimmte Ergebnisse eingeordnet werden etc. Auch er erzeugt i.d.R. sehr große Ausgabedateien.

Regelergebnisse ausgeben = Wert

Der Wert kann EIN, AUS, BILD oder DATEI sein. Voreinstellung ist AUS. Dementsprechend werden alle Regelergebnisse in die Ausgabedatei bzw. auf dem Bildschirm ausgegeben. Dieser Parameter dient dazu festzustellen, welche Ergebnisse aus welchen Satz erzeugt werden. Auch hierdurch können die Ausgabedateien sehr groß werden.

standardisieren ausgeben = Wert

Der Wert kann EIN, AUS, BILD oder DATEI sein. Voreinstellung ist AUS. Dementsprechend werden ausführliche Informationen über das Standardisieren in die Ausgabedatei bzw. auf dem Bildschirm ausgegeben. Das Standardisieren wird hier nicht weiter dokumentiert.

Suchbaum ausgeben = Wert

Der Wert kann EIN, AUS, BILD oder DATEI sein. Voreinstellung ist AUS. Dementsprechend wird der Suchbaum in die Ausgabedatei bzw. auf dem Bildschirm ausgegeben. Alle in irgendeiner Äquivalenzklasse vorkommenden Ausdrücke und Unterausdrücke werden in einem Suchbaum gespeichert, so dass mehrfach vorkommende Unterausdrücke nur einmal abgespeichert werden müssen. Dieser Parameter dient in erster Linie dazu auszugeben, welche Unterausdrücke schon vorgekommen sind. Die Zahl dieser Unterausdrücke kann sehr groß sein.

Warnungen ausgeben = Wert

Der Wert kann EIN, AUS, BILD oder DATEI sein. Voreinstellung ist AUS. Dementsprechend werden (sehr viele!) Warnungen in die Ausgabedatei bzw. auf dem Bildschirm ausgegeben. Siehe Fehler und Warnungen.

bei Warnung anhalten = Wert

Der Wert kann EIN oder AUS sein. Voreinstellung ist AUS. Dementsprechend wartet das Programm bei einer Warnung auf einen Tastendruck oder nicht.

bei Fehler anhalten = Wert

Der Wert kann EIN oder AUS sein. Voreinstellung ist EIN. Dementsprechend wartet das Programm bei einem Fehler auf einen Tastendruck oder nicht. Fehler werden immer auf dem Bildschirm und in die Ausgabedatei ausgegeben. Siehe Fehler und Warnungen.

max Laenge Regelergebnis = Wert

Der Wert muss eine positive ganze Zahl sein. Es werden nur solche Regelergebnisse in die Äquivalenzklassen eingeordnet, deren Länge kleiner oder gleich dem Wert ist. Die Länge eines Ausdrucks ist dabei die Summe der Längen der Unterausdrücke plus 1 (für das Funktionssymbol). Die Länge von Variablen und Konstanten ist 1. Beispiel: Die Länge von i(1) ist 2 und die Länge von *(1,#0,i(0)) ist 1+(1+1+(1+1))=5. Die Länge einer Regel ist das Maximum der Längen der linken und der rechten Seite.

max Laenge Substitution = Wert

Der Wert muss eine positive ganze Zahl sein. Es werden nur solche Regelergebnisse in die Äquivalenzklassen eingeordnet, die mit einer Unifikation (siehe Einführung) der Länge kleiner oder gleich dem Wert entstanden sind. Die Länge einer Substitution ist dabei die Summe der Längen der Substitutoren. Beispiel: Die Länge von (#0->1,#1->i(0)) ist 1+2=3.

max anz versch Variablen = Wert

Der Wert muss eine positive ganze Zahl sein. Es werden nur solche Regelergebnisse in die Äquivalenzklassen eingeordnet, die höchstens Wert verschiedene Variablen enthalten. Ist das Regelergebnis eine Regel, so darf jede Seite nur höchstens Wert verschiedene Variablen enthalten.

max anz Regelvariablen = Wert

Der Wert muss eine positive ganze Zahl sein. In Regeln werden dann Variablen kleiner oder gleich Wert zugelassen. Dieser Wert ist zu erhöhen, falls die Zahl der Variablen für Regeln (auch für neue Regeln!) nicht ausreicht. Der Wert sollte größer oder gleich dem Parameter max anz versch Variablen sein.

max Speicher = Wert

Der Wert muss eine positive ganze Zahl sein. Sobald der im Info-Block, siehe Info-Block, angezeigte Speicherbedarf in Bytes Wert Bytes überschreitet, bricht das Programm ab. Der tatsächliche Speicherbedarf darf derzeit als etwa doppelt so groß wie angezeigt angesetzt werden. Den physikalischen RAM-Speicher erheblich zu überschreiten hat wenig Sinn, da das Programm sonst in exzessives Swappen gerät.


Zurück Weiter Inhaltsverzeichnis