LL-Parser

LL-Parser

Im Compilerbau ist ein LL-Parser ein Top-Down-Parser, der die Eingabe von Links nach rechts abarbeitet, um eine Linksableitung der Eingabe zu berechnen.[1]

Ein LL-Parser heißt LL(k)-Parser, wenn er während des Parsens k Tokens vorausschauen kann und im Gegensatz zum LF-Parser den Kellerinhalt benutzt. k wird dabei als Lookahead bezeichnet. Diesem Parsertyp liegen die LL(k)-Grammatiken zu Grunde.

Obwohl die LL(k)-Grammatiken relativ eingeschränkt sind, werden LL(k)-Parser oft benutzt. Die Entscheidung, nach welcher Regel expandiert wird, kann allein durch Analyse des Lookahead getroffen werden. Eine einfache Möglichkeit zur Implementierung dieser Parsertechnik bietet die Methode des rekursiven Abstiegs.

Funktionsweise

Ausgangspunkt ist eine Grammatik G = (N,Σ,P,S). Der Parser arbeitet mit einer Zustandsmenge Q = (N \cup \Sigma)^* \times \Sigma^* \times \mathbb{N}^*, wobei sich ein Zustand q = (k, w, z) \in Q so zusammensetzt:

  • k ist der aktuelle Inhalt eines Laufzeitkellers, der für die Speicherung der aktuellen Symbole verwendet wird. k kann sowohl Terminal- als auch Nichtterminalsymbole beinhalten.
  • w ist der Teil der Eingabe, der noch nicht gelesen wurde.
  • z ist die Ausgabe, eine Folge natürlicher Zahlen, die die Nummern der Regeln der Linksableitung enthält.

Der nichtdeterministische Automat für die LL(k)-Analyse ist dann:

  • \mathcal{A} = (Q, \delta, q_0, F)
  • q_0 = (S, w, \epsilon) (Anfangszustand)
  • F = (\epsilon, \epsilon, z) (Endzustand)

Dabei ist S das Startsymbol der zugrundeliegenden Grammatik und z die Linksanalyse der Eingabe w.

Die Transitionen δ setzen sich so zusammen:

  • (a\alpha, aw, z) \vdash (\alpha, w, z) (Shift- oder Verschiebeschritt)
  • (A\beta, w, z) \vdash (\alpha\beta, w, zi) (Expansions- oder Ableitungsschritt), wobei die Regel A\rightarrow\alpha in der Regelmenge P enthalten sein muss und i die Nummer dieser Regel ist.

LL(1)-Parser

Dieser Parsertyp verwendet einen Lookahead von einem Zeichen. Auf Grund dieser Einschränkung kann einfach ein deterministischer Parser erstellt werden.

Die oben genannten nichtdeterministischen Schritte werden dabei durch den Lookahead determiniert.

Siehe auch

  1. Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman: "Compilers, Principles, Techniques, and Tools", Seite 191, ISBN 0-201-10088-6

Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Parser (magazine) — Parser: New Poetry Poetics is an annual journal of anarchist poetry and poetics from Vancouver, BC, edited by Roger Farr and Reg Johanson. The first issue was published in May 2007, featuring writing by Alice Becker Ho, Alfredo M. Bonanno, P.… …   Wikipedia

  • parser — (izg. pàrser) m DEFINICIJA inform. program koji obavlja sintaktičku analizu nekog jezika; sintaktički analizator ETIMOLOGIJA engl …   Hrvatski jezični portal

  • parser — pars er, n. One who parses. [1913 Webster] …   The Collaborative International Dictionary of English

  • Parser — Ein Parser [ˈpɑːʁzɐ] (engl. to parse, „analysieren“, bzw. lateinisch pars, „Teil“; im Deutschen gelegentlich auch Zerteiler) ist ein Computerprogramm, das in der Computertechnik für die Zerlegung und Umwandlung einer beliebigen Eingabe in ein für …   Deutsch Wikipedia

  • Parser combinator — In functional programming, a parser combinator is a higher order function which accepts several parsers as input and returns a new parser as its output. In this context, a parser is a function accepting strings as input and returning some… …   Wikipedia

  • Parser Combinator — In mathematics and functional programming, Higher Order functions (HOF) are defined as the functions that can take functions as their input and can also produce functions as their output. The use of a HOF as an infix operator in a function… …   Wikipedia

  • Parser — Это статья о языке программирования, об алгоритме синтаксического анализа см. Синтаксический анализ. Parser Семантика: мультипарадигменный Тип исполнения: Интерпретатор компилирующего типа Появился в …   Википедия

  • Parser-Generator — Ein Parsergenerator ist ein Computerprogramm, das unter Eingabe einer Spezifikation einen Parser erzeugt. Inhaltsverzeichnis 1 Grundlagen 2 Algorithmen 3 Siehe auch 4 Weblinks // …   Deutsch Wikipedia

  • Parser — Pạr|ser 〈m. 3; EDV〉 Bestandteil eines Compilers, Programm, das die syntaktische Analyse eines Quellprogramms durchführt, um es in eine Maschinensprache zu übertragen [zu engl. parse „(grammatisch) analysieren“] * * * Pạr|ser , der; s, [engl.… …   Universal-Lexikon

  • Parser (CGI language) — Infobox programming language name = Parser paradigm = multiparadigm macro, object oriented year = since 1997 designer = Konstantin Morshnev (Art. Lebedev Studio) developer = Alexander Petrosyan (Art. Lebedev Studio) latest release version = 3.2.2 …   Wikipedia

  • Parser Grammar Engine — The Parser Grammar Engine (originally Parrot Grammar Engine) or PGE is a compiler and runtime for a Perl 6 rules for the Parrot virtual machine. [cite web | url=http://search.cpan.org/ ltoetsch/parrot 0.2.2/compilers/pge/README | title=Parrot… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”