Kanonischer LR parser

In der Informatik ein kanonischer LR parser oder LR (1) ist parser ein LR parser, dessen grammatisch analysierende Tische auf eine ähnliche Weise als mit LR (0) parsers gebaut werden, außer dass die Sachen in den Artikel-Sätzen auch einen lookahead, d. h., ein Terminal enthalten, das durch den parser nach der Rechte der Regel erwartet wird. Zum Beispiel könnte solch ein Artikel für eine Regel Ein  B C sein

: Ein  B · C, ein

der bedeuten würde, dass der parser eine Schnur entsprechend B gelesen hat und als nächstes eine Schnur entsprechend C erwartet, der vom Terminal gefolgt ist. LR (1) kann sich parsers mit einer sehr großen Klasse von Grammatiken befassen, aber ihre Syntaxanalyse-Tische sind häufig sehr groß. Das kann häufig durch das Mischen von Artikel-Sätzen gelöst werden, wenn sie abgesehen vom lookahead identisch sind, der auf so genannten LALR parsers hinausläuft.

Das Konstruieren von LR (1) Syntaxanalyse-Tische

Ein LR (1) Artikel ist eine Produktion mit einem Anschreiber zusammen mit einem Terminal, z.B,

[S  ein A · B e, c]. Intuitiv zeigt solch ein Artikel an, wie viel einer bestimmten Produktion wir bereits gesehen haben (ein A), was wir als nächstes erwarten konnten (B e), und ein lookahead, der damit übereinstimmt, was im Eingang folgen sollte, wenn wir jemals durch die Produktion S  Ein B e abnehmen. Indem wir solche lookahead Information ins Artikel-Konzept vereinigen, können wir klüger machen reduzieren Entscheidungen.

Der lookahead eines LR (1) wird Artikel direkt nur verwendet, wenn das Betrachten Handlungen reduziert (d. h., wenn · Anschreiber ist am richtigen Ende).

Der Kern eines LR (1) Artikel [S  ein A · B e, ist c] der LR (0) Artikel S  ein A · B e. Verschiedener LR (1) Sachen kann denselben Kern teilen.

Zum Beispiel, wenn wir zwei LR (1) Sachen der Form haben

  • [Ein  α · a] und
  • [B  α · b],

wir nutzen den lookahead aus, um der die Verminderung zu entscheiden, zu verwenden. (Dieselbe Einstellung würde vielleicht einen reduzieren/reduzieren Konflikt in der SLR-Annäherung erzeugen.)

Gültigkeit

Der Begriff von Gültigkeitsänderungen.

Ein Artikel [Ein  β · β, ist a] für ein lebensfähiges Präfix α β gültig, wenn es eine niedrigstwertige Abstammung gibt, die α ein w nachgibt, der in einem Schritt α ββ ein w nachgibt

Anfänglicher Artikel

Um die Syntaxanalyse anfangen zu lassen, beginnen wir mit dem anfänglichen Artikel von

: [DER  VON S · S, $].

Hier ist $ ein spezieller Charakter, der das Ende der Schnur anzeigt.

Verschluss

Verschluss wird mehr raffiniert.

Wenn [Ein  α · B β, gehört a] dem Satz von Sachen,

und B  γ ist eine Produktion der Grammatik,

dann fügen wir den Artikel [B  hinzu · γ, b] für den ganzen b im ERSTEN (β a).

Goto

Goto ist dasselbe.

Ein Staat, der [Ein  α enthält · X β, wird sich a] zu einem Staat bewegen, der [Ein  α X enthält · β, a] mit dem Etikett X.

Jeder Staat hat Übergänge gemäß Goto.

für den ganzen

Verschiebungshandlungen

Die Verschiebungshandlungen sind dasselbe.

Wenn [Ein  α · b β, ist a] im Staat I, und ich bewege mich, um I mit dem Etikett b festzusetzen, dann fügen wir die Handlung hinzu

:action [k, b] = "wechseln M" aus

Reduzieren Sie Handlungen

Die reduzieren Handlungen werden mehr raffiniert als SLR.

Wenn [Ein α ·, a] ist im Staat I, dann fügen wir die Handlung hinzu:

"Reduzieren Sie Einen  α" auf die Handlung [Ich,].

Bemerken Sie, dass wir Information davon nicht verwenden, FOLGEN (A) mehr.

Der goto Teil des Tisches ist wie zuvor.

Außenverbindungen


Das Archipel Sulu / Illithid
Impressum & Datenschutz