Class Rule
In: Grammatiken.rb
Parent: Object

Diese Klasse repräsentiert die einzelnen Regeln. Jede Regel besteht aus einem Symbol als linker Regelseite und einem Array mit Alternativen als rechter Seite der Regel.

Methods

[]   countAlts   from_Yacc   getAlts   getSymbol   isEpsilon   new   toRel   to_s  

Public Class methods

Die Methode erzeugt Ausdrucksgrammatiken aus Kurzangaben.

 * Die Kurzangaben sind eine Folge von Zeilen, die jeweils ein Operatortoken  (z.B. addOp) in seinen Eigenschaften beschreiben.
 * Bei binären Operatortoken hat die Zeile den Aufbau:  <Assoc> <Operator>;
 <Assoc> steht für left, right oder none und legt die Assoziativität des
 Operators fest; none besagt, daß keine Assoziativität vorliegt und daher
 bei mehr als einem Operator voll geklammert werden muß.
 * Bei unären Operatortoken hat die Zeile den Aufbau: <Pos> <Operator>;
 <Pos> steht für pre oder post und legt fest, ob der Operator vor oder nach  dem Operanden steht.
 * Die Operatorzeilen sind nach wachsender Präzedenz angeordnet, d.h.
 die  erste Zeile gehört zu dem Operatortoken, das am schwächsten bindet.
 * Die letzte Zeile hat die Form: atom <token 1 >, ..., <tokenN>
 und führt die atomaren Bestandteile des Ausdrucks ein.
 * Die erste Zeile hat die Form: name <Bezeichner>
 und führt den Namen der Ausdrucksgrammatik ein, mit dem alle erzeugten  Nonterminals beginnen.

Der Konstruktor einer Regel bekommt einen String mit der kompletten Regel übergeben. Dieser wird am Trennzeichen -> in die linke und rechte Seite geteilt. Die linke Seite wird dem Konstruktor von Symb übergeben und das neue Symbol im @symbol-Attribut abgelegt. Die rechte Seite wird weiter zerlegt in die verschiedenen Alternativen (Nach Zeilenumbruch beliebiger Einrückung und dem Zeichen |). Diese werden wiederum dem Konstruktor von Alternative übergeben und die so entstehenden Alternativen in das @alts-Array gepackt.

Public Instance methods

Operator der den Zugriff auf die einzelnen Alternativen der Regel ermöglicht. regel[i] liefert das Symbol das im @alts-Array an Index i liegt.

Gibt die Anzahl der Alternativen einer Regel zurück

Einfacher Getter für @alts (Array aller Alternativen)

Einfacher Getter für @symbol

Diese Methode liefert einen boolschen Wert (true oder false) zurück, ob aus dieser Regel das Leerezeichen Epsilon erzeugt werden kann. Dazu muss Epsilon entweder direkt ableitbar sein.

liefert die Relation zu einer Regel

Die to_s Methode, die eine Regel in einem String ausgibt. Auf der linken Seite des Pfeiles ( "->" ) steht das Non-Terminal. Rechts davon stehen dann die Alternativen, die jeweils durch einen "|" getrennt sind. Jede einzelne Alternative steht in einer neuen Zeile. Die einzelnen Alternativen, Trennzeichen und das linke Symbol sind durch Leerzeichen getrennt.

[Validate]