Seltsame lexikalische Syntax
- Diesen Monat habe ich 42 Programmiersprachen gelernt, um einen neuen Syntax-Highlighter für llamafile zu bauen. Zu Halloween möchte ich die überraschendsten Syntaxformen teilen.
- Unterstützt werden Ada, Assembly, BASIC, C, C#, C++, COBOL, CSS, D, FORTH, FORTRAN, Go, Haskell, HTML, Java, JavaScript, Julia, JSON, Kotlin, ld, LISP, Lua, m4, Make, Markdown, MATLAB, Pascal, Perl, PHP, Python, R, Ruby, Rust, Scala, Shell, SQL, Swift, Tcl, TeX, TXT, TypeScript und Zig.
Wie man einen Syntax-Highlighter implementiert
- Die Implementierung eines Syntax-Highlighters ist nicht schwer. C++ und GNU gperf sind dabei nützliche Werkzeuge.
- gperf kann perfekte Hash-Tabellen erzeugen, um die Performance zu maximieren.
- Ein grundlegender Syntax-Highlighter lässt sich als endlicher Zustandsautomat implementieren und konzentriert sich auf Strings, Kommentare und Schlüsselwörter.
Demo
- Der neue Syntax-Highlighter von llamafile hat einen starken Vorteil gegenüber ollama.
- Es gibt eine Demo, die auf Windows 10 mit dem Modell Meta LLaMA 3.2 3B Instruct Code in verschiedenen Programmiersprachen erzeugt.
Beispiele für überraschende lexikalische Syntax
- C: Die Sprache C behauptet, einfach zu sein, hat aber komplexe Elemente wie Trigraphen.
- Haskell: Erlaubt verschachtelte Kommentare.
- Tcl: Kann Anführungszeichen in Bezeichnern enthalten.
- JavaScript: Hat eine Syntax für reguläre Ausdrücke und verwendet UNICODE-Zeichen als Zeilenumbruchzeichen.
- Shell: Kann die Heredoc-Syntax auf verschiedene Arten verwenden.
- String Interpolation: Kotlin, Scala und TypeScript erlauben das Einfügen von Code in Strings.
- Swift: Kann Strings mit mehreren
# umschließen.
- C#: Kann Strings mit mehreren Anführungszeichen umschließen.
- FORTH: Tokenisiert alles anhand von Leerraumgrenzen.
- FORTRAN und COBOL: llamafile unterstützt Syntax-Highlighting für diese Sprachen.
- Zig: Beginnt mehrzeilige Strings mit zwei Backslashes.
- Lua: Verwendet eckige Klammern und Gleichheitszeichen für mehrzeilige Strings.
- Assembly: Hat viele verschiedene Dialekte, was Syntax-Highlighting schwierig macht.
- Ada: Verwendet einfache Anführungszeichen für verschiedene Zwecke.
- BASIC: Benötigt am Ende eines Strings kein Anführungszeichen.
- Perl: Hat eine einzigartige Syntax für reguläre Ausdrücke.
- Ruby: Die Syntax ist komplex und schwer zu verstehen.
Komplexität der unterstützten Sprachen
- FORTH ist die einfachste und Ruby die komplexeste Sprache.
- Die Komplexität wird anhand der Anzahl der Codezeilen für das Syntax-Highlighting jeder Sprache bewertet.
Zusammenfassung von GN⁺
- Dieser Artikel untersucht die einzigartige Syntax verschiedener Programmiersprachen und liefert Einblicke, die für die Implementierung eines Syntax-Highlighters nötig sind.
- Der Syntax-Highlighter von llamafile unterstützt viele verschiedene Sprachen und kann besonders für die Wartung älterer Sprachen nützlich sein.
- Er hilft dabei, die syntaktische Komplexität von Programmiersprachen zu verstehen, und ist für Menschen nützlich, die sich für die Entwicklung von Syntax-Highlightern interessieren.
- Projekte mit ähnlichen Funktionen sind Pygments und Emacs.
1 Kommentare
Hacker-News-Kommentar