Sie sind auf Seite 1von 4

Parser

aus Wikipedia, der freien Enzyklopdie

Ein Parser [pz] (engl. to parse, analysieren, bzw. lateinisch pars, Teil; im Deutschen gelegentlich auch Zerteiler)
ist ein Computerprogramm, das in der Informatik fr die Zerlegung und Umwandlung einer Eingabe in ein fr die
Weiterverarbeitung geeigneteres Format zustndig ist. Hufig werden Parser eingesetzt, um im Anschluss an den
Analysevorgang die Semantik der Eingabe zu erschlieen und daraufhin Aktionen durchzufhren.

Im Vergleich zu einem Recognizer, der die Eingabe analysiert und ausgibt, ob diese im Sinne der Vorgaben richtig oder
falsch ist, gibt der Parser die Analyse einer Eingabe in einer gewnschten Form aus und erzeugt zustzlich
Strukturbeschreibungen.

Die Syntaxanalyse (Parsing) findet auch auerhalb der Informatik Anwendung, z. B. bei der Untersuchung der Struktur von
natrlichen Sprachen. In der Grammatik wrde die Syntaxanalyse eines Satzes dem Zerlegen des Satzes in seine
grammatikalischen Bestandteile (Syntax) entsprechen. Siehe dazu Linguistik.

Inhaltsverzeichnis
1 Anwendung und Beispiele
2 Funktionsweise
3 Parser-Typen
3.1 Parser fr kontextfreie Grammatiken
3.2 Parser fr kontextsensitive Grammatiken
4 Beispiel
5 Siehe auch
6 Literatur
7 Weblinks

Anwendung und Beispiele


Im Allgemeinen wird ein Parser dazu verwendet, einen Text in eine neue Struktur zu bersetzen, z. B. in einen Syntaxbaum,
welcher die Hierarchie zwischen den Elementen ausdrckt.

HTML-Code besteht aus reinem Text. Der in einem Webbrowser enthaltene Parser erstellt daraus den logischen
Aufbau als Datenstruktur. Das Aussehen dieser Elemente wird getrennt via CSS definiert.
RSS-Parser wandeln RSS-Feeds in ein anderes Datenformat, beispielsweise fr eine HTML-Seite.
XML-Parser analysieren XML-Dokumente und stellen die darin enthaltenen Informationen (also Elemente, Attribute
usw.) fr die weitere Verarbeitung zur Verfgung.
URI-Parser lsen Schemata wie URLs in ihren hierarchischen Aufbau auf (siehe dazu RFC 3986).
Logdatei-Parser dienen zum Extrahieren von relevanten Informationen aus Webserver-Protokolldateien,
Ereignisprotokollen und anderer in Logdateien gespeicherter Informationen zur automatisierten Analyse.
Suchmaschinen parsen Webseiten und crawlen relevante Textpassagen.
Auslesen einer Programmiersprache. Aus der erhaltenen Datenstruktur kann ein Compiler dann Maschinencode bzw.
Bytecode erzeugen.
Ein Kommandozeileninterpreter parst Befehle mitsamt deren Parameter fr die korrekte Ausfhrung der Anweisungen
des Benutzers (z. B. via COMMAND.COM).

Funktionsweise
Zur Analyse des Texts verwenden Parser in der Regel einen separaten lexikalischen Scanner (auch Lexer genannt). Dieser
zerlegt die (als simple Aneinanderreihung von Zeichen vorliegenden) Eingabedaten in Token (Eingabesymbole bzw.
Wrter, die der Parser versteht); weil die Zerlegung in Token einer regulren Grammatik folgt, ist der Scanner meist ein
endlicher Automat. Diese Token dienen als atomare Eingabezeichen des Parsers. Parser, die keinen separaten Scanner
verwenden, werden Scannerless parsers genannt.
Der eigentliche Parser als Implementierung eines abstrakten Automaten (meist realisiert als Kellerautomat) kmmert sich
dagegen um die Grammatik der Eingabe, fhrt eine syntaktische berprfung der Eingangsdaten durch und erstellt in der
Regel aus den Daten einen Ableitungsbaum (in Anlehnung an das Englische gelegentlich auch als Parse-Baum bezeichnet).
Dieser wird danach zur Weiterverarbeitung der Daten verwendet; typische Anwendungen sind die semantische Analyse,
Codegenerierung in einem Compiler oder Ausfhrung durch einen Interpreter.

Bei HTML wrde ein lexikalischer Scanner die HTML-Datei in HTML-Tags und Flietext zerlegen und diese Bestandteile
an den Parser weiterreichen d. h. den Scanner interessiert nur das Aussehen der Syntaxelemente (wenn es in spitzen
Klammern steht, ist es ein HTML-Tag). Der Parser dagegen verarbeitet die syntaktischen Zusammenhnge, d. h.
untersucht, welche Paare von Tags zusammengehren bzw. wie die Tags ineinander verschachtelt sind; die inhaltliche
Bedeutung der Tags interessiert den Parser dagegen nicht, sondern wird erst von der darauf folgenden Weiterverarbeitung
bercksichtigt.

Anschaulich dargestellt ist ein Parser diejenige Software, welche die Anweisungen im Quelltext des Anwenders berprft,
weiterverarbeitet und weiterleitet.

Parser-Typen
Man unterscheidet verschiedene Parse-Verfahren. Dabei wird nach genereller Vorgehensweise, also der Unterscheidung nach
der Reihenfolge, in der die Knoten des Ableitungsbaums erstellt werden (top-down, auch theoriegetriebenes Parsing oder
bottom-up, auch eingabegetriebenes Parsing, sowie left corner), spezifischer Vorgehensweise (LL, LR, SLR, LALR,
LC, ) und Implementierungstechnik (rekursiv absteigend, rekursiv aufsteigend oder tabellengesteuert) unterschieden.
Weiter wird auch nach Grammatikart unterschieden.

Parser fr kontextfr eie Grammatiken

Hier ein paar auf kontextfreien Grammatiken basierende Verfahren:

Top-Down-Parser
LF-Parser
LL-Parser
Bottom-Up-Parser
LR-Parser
SLR-Parser
LALR-Parser
Chart-Parser
Left-Corner-Parser
LC-Parser

Parser fr kontextsensitive Grammatiken

Packrat Parser (Parsing Expression Grammars)

Das Parsen wohldefinierter knstlicher Sprachen (siehe formale Sprachen, Programmiersprachen) ist weniger komplex als
das Parsen frei gewachsener natrlicher Sprachen wie Englisch oder Deutsch, die durch eine Vielzahl von Mehrdeutigkeiten,
Irregularitten und Inkonsistenzen geprgt sind. Siehe hierzu auch Computerlinguistik.

Hinweis: Der Begriff parsen sollte nicht mit dem Begriff kompilieren verwechselt werden. Letzteres erzeugt einen Zielcode
aus einem Quellcode, dabei wird unter anderem auch geparst, darber hinaus finden aber weitere Aktionen statt.

Beispiel
Parser werden hufig eingesetzt, um aus einer Aneinanderreihung von Symbolen eine Baumstruktur zu machen. Ein
typisches Beispiel dafr sind mathematische Ausdrcke wie . Dieser Ausdruck, so wie er hier steht,
besteht erstmal nur aus einer Reihe von Symbolen:
Symbol Kategorie Erluterung
2 Zahl
+ Rechenzeichen
( Klammer auf
2 Zahl
+ Rechenzeichen
2 Zahl
) Klammer zu
- Rechenzeichen
sin Symbolname (hier: die Sinus-Funktion)
( Klammer auf
Symbolname (hier: die Kreiszahl )
) Klammer zu

Die Aufgabe des Parsers ist nun, die zugrundeliegende Struktur dieser Symbolfolge zu erkennen. Hufig geschieht das in
Form eines Parsebaums, der in diesem Fall so aussehen kann:

Dies ist die Ausgabe eines einfachen Parsers. Diese Ausgabe kann nun durch weitere Programme analysiert werden.

Siehe auch
Compilerbau
Parsergenerator
Generative Programmierung

Literatur
A. W. Appel: Modern Compiler Implementation in Java. Cambridge, 1998.
Paul Bennett: A Course in Generalized Phrase Structure Grammar. London: UCL Press. 1995. ISBN 1-85728-217-5.
Robert D. Borsley: Syntactic Theory. A unified approach. London: Edward Arnold. 1991. 2. berarbeitete Auflage
1998, ISBN 0-340-70610-4. Deutsche bersetzung: Syntax-Theorie. Ein zusammengefasster Zugang. Tbingen:
Niemeyer Verlag. 1997. ISBN 3-484-22055-4.
Sven Naumann, Hagen Langer: Parsing. Teubner Verlag, 1994.

Weblinks
Mathos Parser - mathematical expression parser in C# (englisch)
Parsing Techniques A Practical Guide (englisch)
Syntaxanalyse (Parsing) (PS)

Abgerufen von https://de.wikipedia.org/w/index.php?title=Parser&oldid=166963778

Kategorien: Compilerbau Computerlinguistik Programmierwerkzeug

Diese Seite wurde zuletzt am 4. Juli 2017 um 08:48 Uhr bearbeitet.


Der Text ist unter der Lizenz Creative Commons Attribution/Share Alike verfgbar; Informationen zu den Urhebern
und zum Lizenzstatus eingebundener Mediendateien (etwa Bilder oder Videos) knnen im Regelfall durch Anklicken
dieser abgerufen werden. Mglicherweise unterliegen die Inhalte jeweils zustzlichen Bedingungen. Durch die
Nutzung dieser Website erklren Sie sich mit den Nutzungsbedingungen und der Datenschutzrichtlinie einverstanden.
Wikipedia ist eine eingetragene Marke der Wikimedia Foundation Inc.