Forums Neueste Beiträge
 

Parser, Lexer in VB6

25/11/2010 - 21:47 von Paul Pierot | Report spam
Hallo,

zur Zeit sitze ich an einem HTML-Editor via WebBrowser-Control. Es soll
zur Anzeige von simplen Notizen dienen. Da das Programm ohne
PHP-Interpeter auskommen soll, möchte ich ein paar selbstdefinierte Tags
zur Verfügung stellen, um die Anzeige aufzumöbeln.

Das Gerüst meiner Custom-Tags soll dabei in grober Anlehnung an PHP
folgendermaßen aussehen:

<?proc
[BEFEHL1 Eigenschaft1= Eigenschaft2= ... ]
?>

z.B.:
<?proc
TITELLISTE1 TYPE=1 SORT="a-z" DIVIDER="<BR>" ID="titelliste1"
?>

Der Parser soll nun vor der Ausgabe des Quellcodes meine Tokens in HTML
übersetzen:
<DIV id="titelliste1">
<A href="titel1.htm">Titel1</A><BR>
<A href="titel2.htm">Titel2</A><BR>
[...]
</DIV>

Nun meine Fragen:
1. Für VB6 habe ich zum Thema Parser/ Lexer im Internet keine
Codeschnipsel gefunden; ich will das Rad nicht neu erfinden, vielleicht
hat mir jemand ein kleines Beispiel?

2. Zur Realisierung scheint mir eine hierarchische Baumstruktur geeignet
(Treeview), in die ich meine Tokens ablege. Da ich nur die Datenstrukur
des Treeviews brauche, reicht aus Geschwindigkeits- und Speichergründen
ein virtuelles Treeview:

Dim Tree As TreeView
Set Tree = New TreeView 'Fehler
Tree.Nodes.Add , , "Root", "Wurzel"

Das Beispiel aus dem Internet meldet: "Ungültige Verwendung von NEW"
Wie geht das richtig?


Viele Grüße,
Paul.
 

Lesen sie die antworten

#1 W. Wolf
26/11/2010 - 10:01 | Warnen spam
"Paul Pierot" schrieb

[...]
Nun meine Fragen:
1. Für VB6 habe ich zum Thema Parser/ Lexer im Internet keine
Codeschnipsel gefunden; ich will das Rad nicht neu erfinden, vielleicht
hat mir jemand ein kleines Beispiel?




Da gibt es mehrere Möglichkeiten:
Das einfachste dürfte wohl i=instr(code,"<?") sein.
Wenn Du ausschließen kannst dass ein <? nicht innerhalb
einer Tag-Value vorkommt, dann ist das recht einfach,
sonst ein bißchen aufwendiger.

Komfortabler geht es mit Regular Expressions. Dazu gibt
es sicher Beispiel-Code. Ich selber verwende hier die
Komponente VSFlexString von ComponentOne. Diese ist
auch beim FlexGrid dabei.
Die Interpretation "deiner" Sprache mußt Du eh selber
machen, weil die Syntax ja von dir kommt.

Alternative: Wie wàre es mit XML? Alles was sich zwischen
<? ... und ?> befindet, könnte doch auch konformes XML sein.
Hier könntest dann Olafs Tools verwenden oder MSXML oder
sicher auch Quellcode im Internet aufstöbern.

Alternative: Wie wàre es mit VBScript oder JS? Alles was
sich zwischen <? ... und ?> befindet, könnte doch ein von
der MS-Scriptkomponente interpretierbarer Code sein, welchen
Du durch das Script-Control jagst.


Dim Tree As TreeView
Set Tree = New TreeView 'Fehler
Tree.Nodes.Add , , "Root", "Wurzel"



Das geht meines Wissens nicht. Du kommst um ein
verstecktes Formular nicht herum. Die Geschwindigkeit
sollte dabei nicht all zu sehr leiden, wenn die
Visible Eigenschaft des TreeViews auf False steht.
Andererseits kannst Du Dir ein virtuelles TV
für diese Zwecke auch nachbauen (denke ich). Nodes
ist eine Collection und der einzelne Node eine Klasse.
Ob das dann besser performt wie das TV ist zu prüfen.

Schlussbemerkung: das was Du da programmierst gibt es
schon. Schau dir mal GSNotes (http://www.tgslabs.com) an.
Ältere Versionen davon sind sogar Freeware.

Schönen Gruß
W. Wolf

Ähnliche fragen