AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Browserkompo mit Scrollbox
Thema durchsuchen
Ansicht
Themen-Optionen

Browserkompo mit Scrollbox

Ein Thema von CalganX · begonnen am 7. Jan 2003 · letzter Beitrag vom 7. Jan 2003
 
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.124 Beiträge
 
Delphi 11 Alexandria
 
#8
  Alt 7. Jan 2003, 16:50
Moin Chris,

aller Anfang dürfte in so einem Falle mal die lexikalische Analyse sein.

Ich versuch' mal kurz zu beschreiben, was man dafür so braucht.
  • Zeichenweises durchlesen der Datei
  • Aufbau einer Tokenliste, wobei ein Token üblicher Weise aus aus einer Kennung (was ist es denn) und einem Attribut besteht. Das Attribut enthält dann den Wert. Hast Du z.B. einen String gefunden, wäre der gefundene Text das Attribut und die Kennung könnte toHTMLString sein (die Kennungen aufgebaut als Aufzählungstyp)
    Ob man hierbei z.B. die Sonderzeichen &xxxx als ein Token mit unterschiedlichen Attributen betrachtet oder jedem ein eigenes Token spendiert (wäre wohl nicht unbedingt sinnvoll für das weitere Vorgehen) musst Du dann selber entscheiden.
  • Um die Zeichen gleich ein wenig sinnvoll auszuwerten kannst Du auch Flags verwenden, um z.B. anzuzeigen, das Du gerade ein Zeichen gefunden hast, dass ein Tag öffnet (<) um die weitere Auswertungen zu steuern, z.B., dass jetzt entweder ein / oder ein Tagname kommen muss. Man könnte natürlich /tagname als eigenes Token ansehen.
  • Wurde auf diesem Wege dann eine Tokentabelle aufgebaut (dynamisches Array) kann es "schon" mit der Syntaxprüfung losgehen
  • Hierbei muss dann der Tokenstrom der Reihe nach durchgegangen werden, und, anhand des jeweils gefundenen Tokens entschieden werden, ob dieses an dieser Stelle sein kann. Ein </tagname> kann z.B. keine weiteren Werte enthalten. Ist das doch der Fall kannst Du entweder mit einem Fehler abbrechen, oder Dir den Fehler merken und versuchen bis zu nächsten verarbeitbaren Wert zu gehen.

Das nur mal so in Kürze. Oft läuft das auch so ab, das der eigentliche Parser ein Token nach dem anderen abfordert, und erst zu diesem Zeitpunkt die lexikalische Analyse versucht das nächste Token zu liefern.

Ich finde es von Vorteil die Schritte, zumindest zu Anfang, komplett zu trennen. Für meinen Geschmack erleichtert das den Test, ob die einzelnen Bestandteile auch wie erwartet arbeiten.

Lass Dir doch als erstes mal eine sinnvolle Tokenliste (Aufzählungstyp) einfallen zu lassen. Ich hatte das mal als Objekt erstellt, so dass ich dann nur noch jeweils TokenList.Add(TokenTyp,Attribut) gebraucht habe, um der Liste ein Element hinzuzufügen.

Ach so:
Für die lexikalische Analyse braucht man i.d.R.:
Eine Liste der Bezeichner, Operatoren, Trennzeichen usw.
Wahrscheinlich wirst Du ja SelfHTML haben. Dort ist das glaube ich auch einzeln aufgeschlüsselt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
 


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 22:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz