AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eigener Parser

Ein Thema von BillieJoe90 · begonnen am 27. Feb 2007 · letzter Beitrag vom 28. Feb 2007
Antwort Antwort
Benutzerbild von BillieJoe90
BillieJoe90

Registriert seit: 29. Sep 2006
Ort: Bovenden
122 Beiträge
 
#1

Eigener Parser

  Alt 27. Feb 2007, 19:41
Hallo,
meine Frage passt vielleicht nicht ganz in diesen Bereich, aber egal...

Ich würde gerne einen eigenen XML-Parser schreiben. Nicht des Nutzen wegen (wozu das Rad neu erfinden?), sondern zur Übung bzw. zum Verständnis. Nun bin ich auf der Suche nach einem Tutorial, wie man einen Parser programmiert. Am besten wäre natürlich eines für eine SGML-Sprache wie HTML oder XML. Leider habe ich im Internet bis jetzt nur unpassende Tutorials gefunden.
Kennt jemand eines/welche? Sprache ist egal, englisch oder deutsch halt...

Danke schonmal!

Johannes
Johannes
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Eigener Parser

  Alt 28. Feb 2007, 09:59
Hi,
an sich musst Du beim Parser-Bau wirklich nur nach dem allgemeinen Stichwort Parser suchen. Die Sprache ist tatsächlich egal.
Die Arbeitsweise ist fast immer die gleiche, Du arbeitest in grob 4 Schritten:
  1. Screener - Zerlegen der Eingabe in einzelne Worte (entfernen von Leerzeichen und Kommentaren)
  2. Scanner - Erkennen von Schlüsselworten, Umwandlung von Worten in Token
  3. Parser - Syntaktische Analyse, prüft ob die Token in dieser Kombination gültig ist
  4. Syntaxbaum - Wird vom Parser erstellt, kann aber z.B. auch durch das Erbauer-Muster realisiert werden

Das sind keine scharf getrennten Schritte. Häufig wird der Scanner schon den Screener beinhalten und auch der Parser kann alles auf einmal machen. Trotzdem hat es sich durchgesetzt, dass man wenigstens den Scanner/Lexer von dem Parser trennt. Insbesondere ist es aber eher unüblich, dass man den kompletten Parser selbst erstellt, da es hier einige Fehlermöglichkeiten gibt. Sehr viel häufiger wird man eher zu einem Parsergenerator greifen. Diesen gibt man eine Grammatikdatei mit, die die Syntax (häufig als BNF) enthält. Daraus erstellt der Parsergenerator dann einen Parser in der Zielsprache.
Das hat durchaus viele Vorteile, da sich so deutlich bessere (und fehlerfreiere) Parser erstellen lassen, die zudem immer vom Stand der Technik des Generators profitieren können.

An sich kannst Du aber einfach nach dem Begriff Parser suchen, da solltest Du eigentlich einiges finden (z.B. bei Wikipedia). Dinge wie Bottom-Up, Top-Down, LR, Shift-Reduce, LL, ... sollten Dir bei deiner Suche begegnen. Als Lektüre kann ich Dir sonst Aho, Stein, Ullmann - Compilerbau (das Drachenbuch) empfehlen http://www.amazon.de/exec/obidos/ASIN/3486252941/delphipraxis-21. Hier dürfte der erste Teil schon alles zum Thema Parser abdecken, im Gesamten geht das Buch (wie der Titel ja verrät) über den Bau eines Parsers hinaus!

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Benutzerbild von BillieJoe90
BillieJoe90

Registriert seit: 29. Sep 2006
Ort: Bovenden
122 Beiträge
 
#3

Re: Eigener Parser

  Alt 28. Feb 2007, 17:51
Vielen Dank für deine ausführliche Antwort, hat mir sehr geholfen!
Johannes
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.930 Beiträge
 
Delphi 12 Athens
 
#4

Re: Eigener Parser

  Alt 28. Feb 2007, 18:07
nehme einfach
YACC

Yet Another Compiler Compiler
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz