Schreiben Sie einen syntax-highlighter
Hoffte ich, Schreibe meine eigenen syntax highlighter für ein Sommer-Projekt, das ich bin denken, zu arbeiten, aber ich bin nicht sicher, wie das schreiben meiner eigenen syntax highlighter.
Ich weiß, gibt es Reihe von Implementierungen gibt, aber ich würde gerne weitere Informationen über reguläre Ausdrücke und wie syntax-highlighting funktioniert.
Wie funktioniert das syntax-highlighting funktioniert und was sind einige gute Referenzen für die Entwicklung? Funktioniert das syntax-highlighter-scan jedes Zeichen der Eingabe oder funktioniert es Scannen Sie das Dokument/text-Bereich als ganzes, nachdem jedes Zeichen eingegeben wird?
Jede Einsicht würde sehr geschätzt werden.
Dank.
PS: ich war die Planung auf das schreiben in ActionScript
Du musst angemeldet sein, um einen Kommentar abzugeben.
Syntax Highlighter kann in zwei sehr Allgemeine Weise. Der erste implementiert einen kompletten lexer und parser für die Sprache(N) markiert, die genau Identifizierung jeder token-Typ (Schlüsselwort, Klasse, name, Instanz-Namen, Variablen-Typ, Präprozessor-Direktive...). Diese bietet alle erforderlichen Informationen, um genau markieren Sie den code nach einigen Spezifikation (Schlagwörter in rot, Klasse die Namen in blau, was auch immer).
Die zweite Möglichkeit ist etwas wie die Google Code Prettify beschäftigt, wo anstatt der Implementierung eines lexer/parser pro Sprache, ein paar sehr Allgemeine Parser verwendet werden, die das tun, einen guten job auf die meisten Syntaxen. Dieser highlighter, zum Beispiel, wird in der Lage sein, zu analysieren, und markieren Sie einigermaßen gut jede C-ähnliche Sprache, weil seine lexer/parser kann erkennen, die Allgemeinen Bestandteile dieser Arten von Sprachen.
Dies hat auch den Vorteil, dass, als ein Ergebnis, müssen Sie nicht explizit angeben, der Sprache, da der Motor bestimmt selbst, welche seiner generischen Parser kann machen den besten job. Der Nachteil ist natürlich, dass die Hervorhebung ist weniger perfekt, als wenn ein Sprache-spezifische parser verwendet wird.
In StackOverflow-podcast Nummer 50 Steve Yegge plaudert ein wenig über sein Projekt für die Entwicklung von einigen Allgemeinen highlight-Mechanismus. Nicht ein fertiges Produkt und vielleicht mehr entwickelt als du suchst, aber es könnte sein, etwas von Interesse.
Aufbau eines syntax-highlighter ist alles über die Suche nach bestimmten keywords in den code und geben Ihnen einen bestimmten Stil (schriftart, - Stil, - Farbe etc..). Um dies zu erreichen, werden Sie brauchen, um zu definieren, eine Liste von keywords, die spezifisch für die Programmiersprache, in der der code geschrieben ist, und dann analysieren Sie den text (z.B. mittels regulärer Ausdrücke), finden die spezifischen Token und ersetzen Sie Sie mit richtig gestalteten HTML-tags.
Einer sehr grundlegenden highligher in JavaScript geschrieben, würde so Aussehen:
Könnte es helfen, wenn Sie erklären, was das syntax-highlighter ist für. Wenn Sie schreiben es in actionscript, ist Ihre Idee, um ein Textfeld in einem flash-Film, und markieren Sie die syntax nach einem submit-button gedrückt wird? Oder möchten Sie den text zu Lesen von einigen webservice und dann Anzeige der farbig hervorgehobene syntax? ...es ist schwer für mich zu helfen, denn es ist schwer für mich mir vorzustellen, was Sie tun
Jedoch eine syntax-highlighter liest im text, vergleicht dann die Zeilen des codes, um einige regex, die helfen, den syntax-highlighter herauszufinden, was die Worte bedeuten. Zum Beispiel kann das Lesen des Wortes "Funktion" oder "int" als reservierte Wörter und ersetzen Sie Sie mit dem html-text:
vorausgesetzt, Sie haben das css und die wollen reservierte Wörter in rot,
Dies ist das grundlegende Konzept ist und möchten Sie vielleicht nehmen Ideen geshi da kann man sich die Quelle anzeigen lassen.
Einen guten start in ein Ansatz HIERFÜR ist die Udacity-Kurs CS262. Der Titel ist der Aufbau eines web-Browsers, sondern wirklich die Klasse konzentriert sich auf genau die Probleme, die du suchst - wie zu analysieren und lex einen Satz von text. In Ihrem Fall, die Sie verwenden würden, dass die info für die Hervorhebung. Ich nahm es und es war sehr gut. Der Kurs "vorbei" jetzt, aber die videos und die Praxis von Problemen/Hausaufgaben sind noch verfügbar für die Anzeige.
Leider habe ich nie verwendet Actionscript, so kann ich nicht helfen, mit diesem Teil.
Aber abgesehen davon, dass ein guter start, um das schreiben eines syntax-highlighter wäre zu schauen, bestehenden. Zum Beispiel, vim hat syntax-Dateien in form von gewöhnlichen text-Dateien, so dass Sie schauen konnten, bei denen für einen start. Es gibt eine Reihe von regulären Ausdrücken gibt (reguläre Ausdrücke kommen in verschiedenen Geschmacksrichtungen, aber Sie sind nicht so unterschiedlich ...), so dass für diesen Teil könnten Sie einen Blick auf einige Buch.
Persönlich, ich habe festgestellt, Anfang reguläre Ausdrücke zu sein, ein schönes. Mastering regular expressions ist auch schön für den fortgeschrittenen Themen. Regular expressions pocket reference ist auf der anderen Seite schön für die Bestimmung der Unterschiede in den oben erwähnten Aromen, es enthält ein Kapitel über vim ist regex ebenso.
Ich habe ein SQL-code einfärben-tool auf meinem blog vor einer Weile:
http://gruchalski.com/2009/04/26/flex-textrange-performance-issue-on-linux/
Finden Sie einen link zu sqlcodecoloring.zip mit der Quelle. Es ist implementiert mit tokenizer und ein TextRange-Klasse.
Anderen link, sql-code-Farbgebung als Teil der Prototyp-app:
http://github.com/radekg/mysqlinterface/tree/master