![]() |
AW: QuoteText parsen?
Zitat:
Der Scanner erkennt meist mit Hilfe eines Automaten (->State machine) die einzelnen Token. Die Token sind hier: CHARS, BEGIN-GROUP, GROUPNAME, END-GROUP. Der Parser prüft nun, ob die vom Scanner gelieferten Token der zu prüfenden Grammatik entsprechen. Hier z.B.:
Code:
Während des Erkennens kann ein Syntaxbaum erstellt werden. Dieser Syntaxbaum kann Grundlage für einen Compiler sein, der die einzelnen Knoten des Baumes in die Zielsprache übersetzt. Hier wäre die Zielsprache eine Liste von 'TTextPart' Einträgen. Eine andere Zielsprache könnte 'RTF' sein. Oder 'DOCX', oder z.B. formatierter Quelltext etc.
BBText ::= <Literals> [<BBText>]
Literals ::= CHARS | <Group> Group ::= <BeginGroup> <BBText> <EndGroup> BeginGroup ::= BEGIN-GROUP GROUPNAME EndGroup ::= END-GROUP GROUPNAME Viele Parser spannen den Baum nicht mehr explizit auf (obwohl damit Codepfade analysiert werden können, Stichwort: Die Variable 'X' ist wahrscheinlich nicht initialisiert, Rückgabewert undefiniert etc.), sondern spucken direkt das Compilat aus. Das alles hat Sir Rufo in die Klasse gepackt, alles andere wäre ein wenig oversized. Und da die Sprache so einfach ist, spannt er einen eindimensionalen Baum auf: Einen Stack. Übrigens: Es gibt Programme (Compilergeneratoren), denen gibt man die Grammatik der Zielsprache sowie reguläre Ausdrücke zum Erkennen der Token und die spucken dann einen fertigen und garantiert fehlerfreien Parser aus. Füttert man den Generator noch mit Übersetzungsregeln, hat man einen Compiler. |
AW: QuoteText parsen?
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab' den Parser jetzt doch (lieber) in "BjoerkStyle" gemacht. Tut. In diesem Zusammenhang ist bei mir eine andere Frage aufgetaucht. Ist TStringList.Text nicht dasselbe wie das Ganze in einen String aufsummiert? (Siehe auch FBBCParser.LineOut(PaintBox.Canvas, FSL.Text, ..))
|
AW: QuoteText parsen?
Zitat:
Gruß K-H |
AW: QuoteText parsen?
Ok. Thanx. Das war ja das: StringReplace(FSL.Text, sLineBreak, '', [rfReplaceAll]) :oops:
Die LinesOut (Strings) funktioniert übrigens nicht richtig. Die hab ich nochmal überarbeitet… |
AW: QuoteText parsen?
Hier kannst du dir vllt auch noch was abschauen??
![]() |
AW: QuoteText parsen?
Liste der Anhänge anzeigen (Anzahl: 1)
Ok. Thanx. Ich denke aber ich habs jetzt soweit. Etwas optimiert und mit korrekter LinesOut. Man kann übrigens auch von außen (FBBCParser.List.Add..) oder auch im constructor weitere BBCodes setzen. Die werden dann automatisch berücksichtigt.
|
AW: QuoteText parsen?
Cool ist, wenn der Parser noch sowas kann :
"F[sub]d[/sub]" "N/mm[sup]2[/sup]" :thumb: |
AW: QuoteText parsen?
Parser können das, da es problemlos in die Syntax passt, aber es muß das Ziel auch diese Art ver Formatierung können und es benötigt bei der Auswertung des geparsten Textes noch die Funktion, das entsprechend zu übergeben.
|
AW: QuoteText parsen?
Gut. Machen kann man viel..
[SqrtSign] [Picture]c:\...\.jpg[/Picture] |
AW: QuoteText parsen?
Zitat:
Code:
[font="Arial"]blabla[/font]
text [image="c:\...\foo.jpg"] text |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 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 by Thomas Breitkreuz