Start · Sprachen · PHP · Referenz · Parle\ErrorInfo

Parle\ErrorInfo

Klasse

Repräsentiert detaillierte Fehlerinformationen, die von <code>Parle\Parser::errorInfo()</code> zurückgegeben werden.

seit PHP 0.5.0 Kategorie: misc

Signatur

class Parle\ErrorInfo

Beschreibung

Parle\ErrorInfo ist ein einfaches Datenobjekt (Data Transfer Object), das nach einem Parsing-Fehler genaue Informationen über die Art und den Ort des Fehlers bereitstellt. Es wird als Rückgabewert von Parle\Parser::errorInfo() geliefert und enthält den Fehlercode, das betroffene Token sowie den Zustand des Parsers zum Zeitpunkt des Fehlers.

Typischerweise wird Parle\ErrorInfo verwendet, um nach einem fehlgeschlagenen Parsing-Vorgang diagnostische Informationen auszugeben oder weiterzuverarbeiten. Der enthaltene Fehlercode gibt Aufschluss darüber, welche Art von Fehler aufgetreten ist (z. B. ein unerwartetes Token), während token das konkrete Token enthält, das den Fehler verursacht hat.

Da es sich um ein reines Datenobjekt handelt, besitzt die Klasse keinen Konstruktor mit Parametern – die Eigenschaften werden intern vom Parser befüllt und stehen danach zur Lektüre bereit.

Beispiele

Fehlerinformationen nach einem Parsing-Fehler auswerten

<?php
// Einfaches Beispiel: Parser einrichten und Fehlerinfo auswerten
$lex = new Parle\Lexer();
$lex->push('[0-9]+', 1);
$lex->push('[a-z]+', 2);
$lex->build();

$par = new Parle\Parser();
$par->token('NUMBER');
$par->token('WORD');
// Einfache Grammatik: Ausdruck = NUMBER
$par->push('start', 'NUMBER');
$par->build();

// Fehlerhafte Eingabe: Parser erwartet NUMBER, bekommt aber WORD-Token (da Grammatik fehlt)
$par->consume('hello', $lex);
$par->advance();

if ($par->errorInfo() !== null) {
    $error = $par->errorInfo();
    echo 'Fehlercode: ' . $error->id . PHP_EOL;
    if ($error->token !== null) {
        echo 'Betroffenes Token-ID: ' . $error->token->id . PHP_EOL;
        echo 'Token-Wert: ' . $error->token->value . PHP_EOL;
    }
}
Fehlercode: 1 Betroffenes Token-ID: 2 Token-Wert: hello

Fehlerinfo-Eigenschaften ausgeben

<?php
// Direkter Zugriff auf alle öffentlichen Eigenschaften von Parle\ErrorInfo
// (Angenommen, $errorInfo ist ein bereits befülltes Objekt von Parser::errorInfo())

/** @var Parle\ErrorInfo $errorInfo */
if ($errorInfo instanceof Parle\ErrorInfo) {
    echo 'id: '    . $errorInfo->id    . PHP_EOL; // Fehlercode (int)
    echo 'state: ' . $errorInfo->state . PHP_EOL; // Parser-Zustand zum Fehlerzeitpunkt (int)
    if ($errorInfo->token !== null) {
        // Parle\Token-Objekt
        echo 'Token-ID: '    . $errorInfo->token->id    . PHP_EOL;
        echo 'Token-Wert: '  . $errorInfo->token->value . PHP_EOL;
    }
}

// Wichtig · Fallstricke

Öffentliche Eigenschaften:

  • id (int): Numerischer Fehlercode, der die Art des Parsing-Fehlers beschreibt.
  • state (int): Der interne Parser-Zustand zum Zeitpunkt des Fehlers.
  • token (Parle\Token|null): Das Token, das den Fehler verursacht hat, oder null, wenn kein konkretes Token zugewiesen werden kann.

Die Klasse ist nur im Kontext des parle-Extensions verfügbar (PECL). Die Erweiterung muss separat installiert werden (pecl install parle). Objekte dieser Klasse sollten nicht manuell instantiiert werden; sie werden ausschließlich vom Parser erzeugt und befüllt.