Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Parser

JamesBomb / 5 Antworten / Flachansicht Nickles

Tag. Weiss jemand, wo es eine Step by Step Anleitung zum Programmieren eines Parsers gibt? Alternativ würde mir auch eine ausführliche Beschreinbung der Funtionsweise eines P. ausreichen.

bei Antwort benachrichtigen
Andreas42 JamesBomb „Parser“
Optionen

Hi JamesBomb!

Ok, jetzt verstehe ich auch worum's geht. ;-)

Aber im Prinzip kennst du die Lösung: es sind deine "Befürchtungen".

Das Parsen wird bei den bekannten IDEs (und auch bei den Online-Rechtschreibkorrekturen) wohl tatsächlich bei jedem Tastendruck ausgelöst. Evtl. kann man den eigentlichen Parsinganstoss auch auf das Eingeben von Trennzeichen (Spaces, Punkte usw.) beschränken.
Zum Zeitpunkt der Eingabe muss dann nur die gerade aktuelle Zeile neu geparst werden. (Ich weiss nicht, ob hier eine IDE das Parsen über mehrere Zeilen unterstützt, ich hab' einfach noch nicht daraf geachtet.)

Um einen Array mit den Schlüsselworten (oder eine irgendwie verwaltete Wortliste) wirst du nicht herumkommen. Wie sollte es auch sonst funktionieren? ;-)

Die Geschwindigkeit ist hier warscheinlich nicht das grosse Problem (mein Bruder hat das Parsen zum Eingabezeitpunkt schon in compiliertem Basic auf dem C64 umgesetzt, zwar nur mit knapp 100 Schlüssel-wörtern, aber es funktionierte).
Hier ist dann ein schneller Suchvorgang gefragt. Ich denke eine sortierte Schlüsselwort-Liste in Kombination mit binärem Suchen und einem einfachen Hash-Algorythmus (der die ersten zwei Buchstaben eines Wortes für die Einschränkung der Suche im Array verwendet) ist hier ausreichend.

Das eigentliche Syntaxhighlighting würde ich dann über Steuerzeichen realisieren, die in den Quelltext eingefügt werden. Z.B. ein Steuerzeichen für "Färbe nächstes Wort gelb" usw..
Dann muss man sich zum Zeitpunkt der Anzeige nicht mit dem eigentlichen Parsen beschäftigen.

Umgesetzt hab' ich das aber selbst noch nie. Deshalb kann ich dir auch keinen fertigen Algorythmus presentieren.

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen