Text-Parser

Text-Parser

Ein Parser [ˈpɑːɹsɚ] (engl. to parse „analysieren“ bzw. von 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 die Weiterverarbeitung brauchbares Format zuständig ist. Häufig werden Parser eingesetzt, um im Anschluss an den Analysevorgang die Semantik der Eingabe zu erschließen und daraufhin Aktionen durchzuführen.

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 gewünschten Form aus und erzeugt zusätzlich Strukturbeschreibungen.

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

Inhaltsverzeichnis

Anwendung

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 ausdrückt.

  • HTML-Code ist beispielsweise für einen Computer zunächst einmal nichts anderes als ein Text, also eine Aneinanderreihung von Buchstaben und Zeichen. Der in einem Webbrowser enthaltene Parser analysiert das HTML und erstellt daraus eine Beschreibung der Webseite als Datenstruktur, welche die Grafik-Maschine des Browsers anschließend graphisch auf den Bildschirm überträgt.
  • RSS-Parser wandeln RSS-Feeds in einen HTML-Text um oder bereiten die Daten auf eine andere Weise graphisch auf.
  • XML-Parser analysieren XML-Dokumente und stellen die darin enthaltenen Informationen (also Elemente, Attribute usw.) für die weitere Verarbeitung zur Verfügung.
  • URI-Parser lösen 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 extrahieren (parsen) nach dem Herunterladen von Webseiten mit Crawlern die für sie relevanten Textpassagen und bereiten die extrahierten Daten für das Durchsuchen auf.
  • Text-Parser als Kommunikationsschnittstelle zwischen Spieler und Spiel in Text-Adventures.
  • Auslesen einer höheren Programmiersprache, wie beispielsweise C(++) oder Java. Aus der erhaltenen Datenstruktur kann ein Compiler dann Maschinencode bzw. Bytecode erzeugen.

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. „Wörter“, die der Parser versteht); weil die Zerlegung in Tokens einer regulären Grammatik folgt, ist der Scanner meist ein endlicher Automat. Diese Token dienen als atomare Eingabezeichen des Parsers.

Der eigentliche Parser als Implementierung eines abstrakten Automaten (meist realisiert als Kellerautomat) kümmert sich dagegen um die Grammatik der Eingabe, führt eine syntaktische Überprüfung 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 Ausführung durch einen Interpreter.

Im obigen HTML-Beispiel würde ein lexikalischer Scanner die HTML-Datei in HTML-Tags und Fließtext 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 Zusammenhänge, d. h. untersucht, welche Paare von Tags zusammen gehören 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 berücksichtigt.

Anschaulich dargestellt ist ein Parser diejenige Software, welche die Anweisungen im Quelltext des Anwenders überprüft, 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 für kontextfreie Grammatiken

Hier ein paar auf kontextfreien Grammatiken basierende Verfahren:

Parser für kontextsensitive Grammatiken

Das Parsen wohldefinierter künstlicher Sprachen (siehe formale Sprachen, Programmiersprachen) ist weniger komplex als das Parsen frei gewachsener natürlicher Sprachen wie Englisch oder Deutsch, die durch eine Vielzahl von Mehrdeutigkeiten, Irregularitäten und Inkonsistenzen geprägt 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, darüber hinaus finden aber weitere Aktionen statt.

Beispiel

Parser werden häufig eingesetzt, um aus einer Aneinanderreihung von Symbolen eine Baumstruktur zu machen. Ein typisches Beispiel dafür sind mathematische Ausdrücke wie 2 + (3 * 5) − sin(π). Dieser Ausdruck, so wie er hier steht, besteht erstmal nur aus einer Reihe von Symbolen:

Symbol Kategorie Erläuterung
2 Zahl
+ Rechenzeichen
( Klammer auf
3 Zahl
* Rechenzeichen
5 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. Häufig geschieht das in Form eines Parsebaums, der in diesem Fall so aussehen kann:

                       Ausdruck
                      /    |   \
                     /     |    \------------\
                    /      |                  \
            Ausdruck   Operator (-)            Funktionsaufruf
           /   |    \                         /               \
          /    |     \--\                    /                 \
         /     |         \              Funktionsname (sin)     Argument (pi)
 Zahl (2)  Operator (+)   Ausdruck
                         /     |  \
                        /      |   \------\
                       /       |           \
               Zahl (3)    Operator (*)     Zahl (5)

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

Siehe auch

Weblinks

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 1857282175
  • Robert D. Borsley: Syntactic Theory. A unified approach. London: Edward Arnold. 1991. (2nd revised edition 1998) ISBN 0340706104. Deutsche Übersetzung: Syntax-Theorie. Ein zusammengefasster Zugang. Tübingen: Niemeyer Verlag. 1997. ISBN 3484220554)
  • Sven Naumann, Hagen Langer: Parsing. Teubner Verlag, 1994

Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

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

  • Text parser — In an Adventure game, a text parser takes typed input (a command) from the player and simplifies it to something the game can understand. Usually, words with the same meaning are turned into the same word (e.g. take and get ) and certain filler… …   Wikipedia

  • 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

  • Text-Adventure — Adventures oder Abenteuerspiele bezeichnen ein bestimmtes Genre von Computerspielen. In einem Adventure löst der Spieler typischerweise verschiedene Rätsel, findet Gegenstände oder Informationen, redet mit anderen Figuren und treibt so die im… …   Deutsch Wikipedia

  • Text Executive Programming Language — In 1979, Honeywell Information Systems announced a new programming language for their time sharing service named TEX, an acronym for the Text Executive processor. TEX was a first generation scripting language, developed around the time of AWK and …   Wikipedia

  • Text-Mining — Der Begriff Text Mining (engl. für „Textschürfen“) bezeichnet die automatisierte Entdeckung relevanter Informationen aus Textdaten. Mit statistischen und linguistischen Mitteln erschließt Text Mining Software aus Texten Informationen, die die… …   Deutsch 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

  • Parser — Analyse syntaxique Pour les articles homonymes, voir Analyseur. L analyse syntaxique consiste à mettre en évidence la structure d un texte, généralement un programme informatique ou du texte écrit dans une langue naturelle. Un analyseur… …   Wikipédia en Français

  • parser — parse ► VERB 1) analyse (a sentence) into its component parts and describe their syntactic roles. 2) Computing analyse (text) into logical syntactic components. DERIVATIVES parser noun. ORIGIN perhaps from Old French pars parts …   English terms dictionary

  • parser — noun Date: circa 1864 one that parses; specifically a computer program that breaks down text into recognized strings of characters for further analysis …   New Collegiate Dictionary

  • Validierender Parser — Vorlage:Infobox Dateiformat/Wartung/magic fehltVorlage:Infobox Dateiformat/Wartung/website fehlt Extensible Markup Language Dateiendung …   Deutsch Wikipedia

Share the article and excerpts

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