Class ATable
In: actiontables.rb
Parent: UTable

Diese Klasse repräsentiert die Aktionstabelle eines (S)LR-Automaten. Sie erbt von ATable und arbeitet deswegen mit Automaten im DEA-Format. Der Aktionstabelle kann entnommen werden, abhängig vom aktuellen Zustand, welche Aktion durch geführt werden kann. Denkbar wären:

  • shift : zum Lesen eines Zeichen
  • reduce[Item] : Reduktion mit der Regel Item
  • accept : Ist der "Endzustand", der eigentlich nur ein reduce[ S’ -> S], wobei S der Startzustand der Grammatik ist
  • error : wenn kein Übergang möglich ist.

Dazu mehr im Buch: "Syntaxbassierte Programmierwerkzeuge" von Lothar Schmitz, Seite 178. Zusätzlich werden noch die Konflikte errechnet, die auch abgerufen werden können.

Methods

Public Class methods

Der Konstruktor erwartet einen (S)LR-Automaten im DEA-Format. Die Aktionstabelle wird intern in einem zweidimensionalem Hash berechnet.

Public Instance methods

Liefert den Array mit den Konfliktmeldungen. Diese liegen in einem String vor. Bsp. ["K1 : Shift-Reduce-Konflikt", "K2 : Reduce-Reduce-Konflikt"]

Liefert einen boolschen Wert, ob der (S)LR-Automat konfliktfrei ist.

Liefert einen String, in dem alle Konflikte aufgelistet sind. Sollte kein Konflikt vorliegen, steht dieses im String drin.

[Validate]